CCodeGenerator
| Пакет | system.gii |
|---|---|
| Наследование | класс CCodeGenerator » CController » CBaseController » CComponent |
| С момента | 1.1.2 |
| Исходный код | framework/gii/CCodeGenerator.php |
CCodeGenerator — контроллер, который предопределяет несколько действий для целей генерации кода. Производным классам в основном необходимо настроить свойство codeModel и переопределить метод getSuccessMessage. Первый определяет, какую модель кода (расширяющую CCodeModel) должен использовать этот генератор, а второй должен возвращать сообщение об успехе, отображаемое при успешной генерации файлов кода.
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| action | CAction | действие, которое выполняется в данный момент, null, если активное действие отсутствует. | CController |
| actionParams | массив | Возвращает параметры запроса, которые будут использованы для привязки параметров действия. | CController |
| cachingStack | CStack | стек объектов COutputCache | CController |
| clips | CMap | Возвращает список клипов. | CController |
| codeModel | строка | класс модели кода. | CCodeGenerator |
| defaultAction | строка | имя действия по умолчанию. | CController |
| id | строка | Идентификатор контроллера | CController |
| layout | строка | макет, который будет использоваться генератором. | CCodeGenerator |
| module | CWebModule | модуль, к которому принадлежит этот контроллер. | CController |
| pageTitle | строка | заголовок страницы | CCodeGenerator |
| route | строка | маршрут (ID модуля, ID контроллера и ID действия) текущего запроса. | CController |
| templates | массив | список доступных шаблонов кода (имя=>путь) | CCodeGenerator |
| uniqueId | строка | Идентификатор контроллера, который предваряется идентификатором модуля (если таковой имеется). | CController |
| viewPath | строка | Возвращает путь к представлению генератора. | CCodeGenerator |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __construct() | CController | |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| accessRules() | Возвращает правила доступа для данного контроллера. | CController |
| actionCode() | Действие для просмотра кода. | CCodeGenerator |
| actionDiff() | Действие для сравнения кода. | CCodeGenerator |
| actionIndex() | Действие для генерации кода. | CCodeGenerator |
| actions() | Возвращает список внешних классов действий. | CController |
| asa() | Возвращает объект поведения по имени. | CComponent |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| beginCache() | Начинает кэширование фрагментов. | CBaseController |
| beginClip() | Начинает запись клипа. | CBaseController |
| beginContent() | Начинает отображение содержимого, которое должно быть оформлено указанной представлением. | CBaseController |
| beginWidget() | Создаёт виджет и выполняет его. | CBaseController |
| behaviors() | Возвращает список поведений, в соответствии с которыми должен работать этот контроллер. | CController |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| clearPageStates() | Удаляет все состояния страницы. | CController |
| createAbsoluteUrl() | Создаёт абсолютный URL для указанного действия, определённого в данном контроллере. | CController |
| createAction() | Создаёт экземпляр действия на основе имени действия. | CController |
| createUrl() | Создаёт относительный URL для указанного действия, определённого в данном контроллере. | CController |
| createWidget() | Создаёт виджет и инициализирует его. | CBaseController |
| detachBehavior() | Открепляет поведение от компонента. | CComponent |
| detachBehaviors() | Открепляет все поведения от компонента. | CComponent |
| detachEventHandler() | Открепляет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикреплённое поведение. | CComponent |
| disableBehaviors() | Отключает все прикреплённые к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает прикреплённое поведение. | CComponent |
| enableBehaviors() | Включает все прикреплённые к этому компоненту поведения. | CComponent |
| endCache() | Завершает кэширование фрагментов. | CBaseController |
| endClip() | Завершает запись клипа. | CBaseController |
| endContent() | Завершает отображение содержимого. | CBaseController |
| endWidget() | Завершает выполнение указанного виджета. | CBaseController |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| filterAccessControl() | Метод фильтра для фильтра 'accessControl'. | CController |
| filterAjaxOnly() | Метод фильтра для фильтра 'ajaxOnly'. | CController |
| filterPostOnly() | Метод фильтра для фильтра 'postOnly'. | CController |
| filters() | Возвращает конфигурации фильтров. | CController |
| forward() | Обрабатывает запрос с использованием другого действия контроллера. | CController |
| getAction() | Возвращает действие, которое в настоящее время выполняется, null, если активного действия нет. | CController |
| getActionParams() | Возвращает параметры запроса, которые будут использоваться для привязки параметров действия. | CController |
| getCachingStack() | Возвращает стек объектов COutputCache. | CController |
| getClips() | Возвращает список клипов. | CController |
| getEventHandlers() | Возвращает список прикреплённых обработчиков событий для события. | CComponent |
| getId() | Возвращает идентификатор контроллера. | CController |
| getLayoutFile() | Ищет шаблон макета по имени макета. | CController |
| getModule() | Возвращает модуль, к которому принадлежит данный контроллер. Возвращает null, если контроллер не принадлежит ни одному модулю. | CController |
| getPageState() | Возвращает значение состояния страницы. | CController |
| getPageTitle() | Возвращает заголовок страницы. | CCodeGenerator |
| getRoute() | Возвращает маршрут (ID модуля, ID контроллера и ID действия) текущего запроса. | CController |
| getUniqueId() | Возвращает ID контроллера, который префиксен ID модуля (если имеется). | CController |
| getViewFile() | Ищет файл представления по заданному имени представления. | CController |
| getViewPath() | Возвращает путь к представлению генератора. | CCodeGenerator |
| hasEvent() | Определяет, определён ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли у указанного события обработчики. | CComponent |
| hasProperty() | Определяет, определён ли свойство. | CComponent |
| init() | Инициализирует контроллер. | CController |
| invalidActionParams() | Этот метод вызывается, когда параметры запроса не соответствуют требованиям указанного действия. | CController |
| isCachingStackEmpty() | Возвращает, пустой ли кеш-стек. | CController |
| missingAction() | Обрабатывает запрос, действие которого не распознано. | CController |
| processDynamicOutput() | Последовательно обрабатывает динамический вывод. | CController |
| processOutput() | Последовательно обрабатывает вывод, сгенерированный методом render(). | CController |
| raiseEvent() | Вызывает событие. | CComponent |
| recordCachingAction() | Записывает вызов метода, когда в действии кеширование вывода. | CController |
| redirect() | Перенаправляет браузер на указанный URL или маршрут (контроллер/действие). | CController |
| refresh() | Обновляет текущую страницу. | CController |
| render() | Отображает представление с макетом. | CController |
| renderClip() | Отображает заданный фрагмент с предоставленными параметрами. | CController |
| renderDynamic() | Отображает динамическое содержимое, возвращённое заданной функцией обратного вызова. | CController |
| renderDynamicInternal() | Этот метод используется внутри системы. | CController |
| renderFile() | Отображает файл представления. | CBaseController |
| renderInternal() | Отображает файл представления. | CBaseController |
| renderPartial() | Отображает частичное представление. | CController |
| renderText() | Отображает статическую строку текста. | CController |
| resolveViewFile() | Находит файл представления по его имени. | CController |
| run() | Выполняет указанное действие. | CController |
| runAction() | Выполняет действие после прохождения всех фильтров. | CController |
| runActionWithFilters() | Выполняет действие с указанными фильтрами. | CController |
| setAction() | Устанавливает действие, которое в настоящее время выполняется. | CController |
| setPageState() | Сохраняет значение состояния страницы. | CController |
| setPageTitle() | Устанавливает заголовок страницы. | CController |
| setViewPath() | Устанавливает путь к представлению генератора. | CCodeGenerator |
| widget() | Создаёт и выполняет виджет. | CBaseController |
Защищённые методы
| Метод | Описание | Определён в |
|---|---|---|
| afterAction() | Этот метод вызывается сразу после выполнения действия. | CController |
| afterRender() | Этот метод вызывается после того, как указанное представление было отображено путём вызова render(). | CController |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). | CController |
| beforeRender() | Этот метод вызывается в начале метода render(). | CController |
| createActionFromMap() | Создаёт экземпляр действия на основе карты действий. | CController |
| loadPageStates() | Загружает состояние страницы из скрытого поля ввода. | CController |
| prepare() | Подготавливает модель кода. | CCodeGenerator |
| replaceDynamicOutput() | Заменяет заглушки динамического контента фактическим содержимым. | CController |
| savePageStates() | Сохраняет состояние страницы в виде строки base64. | CController |
Подробное описание свойств
codeModel свойство
public string $codeModel;
класс модели кода. Он может быть именем класса (если его можно загрузить автоматически) или псевдонимом пути, указывающим на файл класса. Дочерние классы должны настроить это свойство с конкретным значением.
layout свойство
public string $layout;
макет, используемый генератором. По умолчанию — 'generator'.
pageTitle свойство
public string getPageTitle()
public void setPageTitle(string $value)
заголовок страницы
templates свойство
public array $templates;
список доступных шаблонов кода (имя=>путь)
viewPath свойство
public string getViewPath()
public void setViewPath(string $value)
Возвращает путь к представлению генератора. Возвращается каталог "views" в каталоге, содержащем файл класса генератора.
Подробное описание методов
actionCode() метод
public void actionCode() |
public function actionCode()
{
$model=$this->prepare();
if(isset($_GET['id']) && isset($model->files[$_GET['id']]))
{
$this->renderPartial('/common/code', array(
'file'=>$model->files[$_GET['id']],
));
}
else
throw new CHttpException(404,'Unable to find the code you requested.');
}
Действие предварительного просмотра кода. Это действие отображает указанный сгенерированный код.
actionDiff() метод
public void actionDiff() |
public function actionDiff()
{
Yii::import('gii.components.TextDiff');
$model=$this->prepare();
if(isset($_GET['id']) && isset($model->files[$_GET['id']]))
{
$file=$model->files[$_GET['id']];
if(!in_array($file->type,array('php', 'txt','js','css','sql')))
$diff=false;
elseif($file->operation===CCodeFile::OP_OVERWRITE)
$diff=TextDiff::compare(file_get_contents($file->path), $file->content);
else
$diff='';
$this->renderPartial('/common/diff',array(
'file'=>$file,
'diff'=>$diff,
));
}
else
throw new CHttpException(404,'Unable to find the code you requested.');
}
Действие по сравнению кода. Это действие отображает разницу между вновь сгенерированным кодом и соответствующим существующим кодом.
actionIndex() метод
public void actionIndex() |
public function actionIndex()
{
$model=$this->prepare();
if($model->files!=array() && isset($_POST['generate'], $_POST['answers']))
{
$model->answers=$_POST['answers'];
$model->status=$model->save() ? CCodeModel::STATUS_SUCCESS : CCodeModel::STATUS_ERROR;
}
$this->render('index',array(
'model'=>$model,
));
}
Действие генерации кода. Это действие, которое отображает интерфейс генерации кода. Дочерние классы, в основном, должны предоставить представление «index» для сбора параметров пользователя для генерации кода.
getPageTitle() метод
public string getPageTitle() | ||
| {return} | строка | заголовок страницы |
public function getPageTitle()
{
return 'Gii - '.ucfirst($this->id).' Generator';
}
getViewPath() метод
public string getViewPath() | ||
| {return} | строка | путь к представлению генератора |
public function getViewPath()
{
if($this->_viewPath===null)
{
$class=new ReflectionClass(get_class($this));
$this->_viewPath=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
}
return $this->_viewPath;
}
Возвращает путь к представлению генератора. Будет возвращен каталог "views" в каталоге, содержащем файл класса генератора.
prepare() метод
protected void prepare() |
protected function prepare()
{
if($this->codeModel===null)
throw new CException(get_class($this).'.codeModel property must be specified.');
$modelClass=Yii::import($this->codeModel,true);
$model=new $modelClass;
$model->loadStickyAttributes();
if(isset($_POST[$modelClass]))
{
$model->attributes=$_POST[$modelClass];
$model->status=CCodeModel::STATUS_PREVIEW;
if($model->validate())
{
$model->saveStickyAttributes();
$model->prepare();
}
}
return $model;
}
Подготавливает модель кода.
setViewPath() метод
public void setViewPath(string $value) | ||
| $value | строка | путь к представлению генератора. |
public function setViewPath($value)
{
$this->_viewPath=$value;
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CCodeGenerator