CController
| Пакет | system.web |
|---|---|
| Наследование | class CController » CBaseController » CComponent |
| Подклассы | CCodeGenerator, CExtController |
| С тех пор | 1.0 |
| Исходный код | framework/web/CController.php |
Через действия CController координирует поток данных между моделями и представлениями.
Когда пользователь запрашивает действие 'XYZ', CController выполнит одно из следующих действий: 1. Действие на основе метода: вызов метода 'actionXYZ', если он существует; 2. Действие на основе класса: создание экземпляра класса 'XYZ', если класс найден в карте действий (указано через actions(), и выполнение действия; 3. Вызов missingAction(), который по умолчанию генерирует HTTP-исключение 404.
Если пользователь не указывает действие, CController выполнит действие, указанное в defaultAction.
CController может быть настроен на выполнение фильтров до и после выполнения действий. Фильтры предварительно/послеобрабатывают запрос/ответ пользователя и могут прекратить выполнение действий при необходимости. Они выполняются в указанном порядке. Если во время выполнения любой из фильтров возвращает true, остальные фильтры и действие больше не будут выполняться.
Фильтры могут быть отдельными объектами или методами, определенными в классе контроллера. Они задаются путем переопределения метода filters(). Вот пример задания фильтров:
array(
'accessControl - login',
'ajaxOnly + search',
array(
'COutputCache + list',
'duration'=>300,
),
)
Приведенный пример объявляет три фильтра: accessControl, ajaxOnly, COutputCache. Два первых — это фильтры на основе методов (определены в CController), которые ссылаются на методы фильтрации в классе контроллера; последний — это фильтр на основе объекта, чей класс — 'system.web.widgets.COutputCache', а свойство 'duration' инициализировано как 300 (сек). Для фильтров на основе методов будет выполнен метод с именем 'filterXYZ($filterChain)' в классе контроллера, где 'XYZ' — имя фильтра, как указано в filters(). Обратите внимание, что внутри метода фильтра необходимо вызвать
$filterChain->run() если действие должно быть выполнено. В противном случае процесс фильтрации остановится на этом фильтре. Фильтры можно задать так, чтобы они выполнялись только при выполнении определенных действий. Для фильтров на основе методов это делается с помощью операторов '+' и '-' в задании фильтра. Оператор '+' означает, что фильтр выполняется только при запросе указанных действий; оператор '-' означает, что фильтр выполняется только тогда, когда запрашиваемое действие не входит в число этих действий. Для фильтров на основе объектов операторы '+' и '-' следуют за именем класса.
Свойства публичного доступа
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| действие | CAction | текущее выполняемое действие, null, если активных действий нет. | CController |
| actionParams | массив | Возвращает параметры запроса, которые будут использоваться для привязки параметров действия. | CController |
| cachingStack | CStack | стек объектов COutputCache | CController |
| clips | CMap | Возвращает список клипов. | CController |
| defaultAction | строка | имя действия по умолчанию. | CController |
| id | строка | ID контроллера | CController |
| макет | смешанный тип | имя макета, применяемого к представлениям этого контроллера. | CController |
| модуль | CWebModule | модуль, к которому принадлежит этот контроллер. | CController |
| заголовок страницы | строка | заголовок страницы. | CController |
| маршрут | строка | маршрут (ID модуля, ID контроллера и ID действия) текущего запроса. | CController |
| уникальный идентификатор | строка | ID контроллера, который предваряется ID модуля (если таковой имеется). | CController |
| путь к представлению | строка | Возвращает директорию, содержащую файлы представлений для этого контроллера. | CController |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | CComponent |
| __construct() | CController | |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| accessRules() | Возвращает правила доступа для данного контроллера. | CController |
| 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() | Возвращает ID контроллера. | CController |
| getLayoutFile() | Ищет шаблон представления на основе имени шаблона. | CController |
| getModule() | Возвращает модуль, к которому принадлежит данный контроллер. Возвращает null, если контроллер не принадлежит ни к одному модулю. | CController |
| getPageState() | Возвращает значение состояния страницы. | CController |
| getPageTitle() | Возвращает заголовок страницы. По умолчанию — имя контроллера и имя действия. | CController |
| getRoute() | Возвращает маршрут (ID модуля, ID контроллера и ID действия) текущего запроса. | CController |
| getUniqueId() | Возвращает ID контроллера, префикс которого (если есть) — ID модуля. | CController |
| getViewFile() | Ищет файл представления по заданному имени представления. | CController |
| getViewPath() | Возвращает директорию, содержащую файлы представлений для данного контроллера. | CController |
| 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 |
| widget() | Создает виджет и выполняет его. | CBaseController |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| afterAction() | Этот метод вызывается сразу после выполнения действия. | CController |
| afterRender() | Этот метод вызывается после того, как указанное представление отображено вызовом render(). | CController |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). | CController |
| beforeRender() | Этот метод вызывается в начале метода render(). | CController |
| createActionFromMap() | Создает экземпляр действия на основе карты действий. | CController |
| loadPageStates() | Загружает состояние страницы из скрытого поля ввода. | CController |
| replaceDynamicOutput() | Заменяет заглушки динамического содержимого фактическим содержимым. | CController |
| savePageStates() | Сохраняет состояния страницы как строку base64. | CController |
Подробное описание свойств
action свойство
public CAction getAction()
public void setAction(CAction $value)
текущее выполняемое действие, null, если нет активного действия.
actionParams свойство только для чтения (доступно начиная с v1.1.7)
public array getActionParams()
Возвращает параметры запроса, которые будут использоваться для привязки параметров действия. По умолчанию этот метод возвращает $_GET. Вы можете переопределить этот метод, если хотите использовать другие параметры запроса (например, $_GET+$_POST).
cachingStack свойство только для чтения
public CStack getCachingStack(boolean $createIfNull=true)
стек объектов COutputCache
clips свойство только для чтения
public CMap getClips()
Возвращает список фрагментов. Фрагмент — именованная часть результата отображения, которая может быть вставлена в разные места.
См. также
defaultAction свойство
public string $defaultAction;
имя действия по умолчанию. По умолчанию равно 'index'.
id свойство только для чтения
public string getId()
Идентификатор контроллера
layout свойство
public mixed $layout;
имя макета, который будет применяться к представлениям этого контроллера. По умолчанию null, что означает использование макета приложения application layout. Если значение false, макет не будет применяться. Если контроллер принадлежит модулю и свойство layout равно null, будет использован макет модуля module layout.
module свойство только для чтения
public CWebModule getModule()
модуль, к которому принадлежит контроллер. Возвращает null, если контроллер не принадлежит ни одному модулю.
pageTitle свойство
public string getPageTitle()
public void setPageTitle(string $value)
заголовок страницы. По умолчанию соответствует имени контроллера и имени действия.
route свойство только для чтения (доступно начиная с v1.1.0)
public string getRoute()
маршрут (идентификатор модуля, идентификатор контроллера и идентификатор действия) текущего запроса.
uniqueId свойство только для чтения
public string getUniqueId()
идентификатор контроллера, который предваряется идентификатором модуля (если есть).
viewPath свойство только для чтения
public string getViewPath()
Возвращает директорию, содержащую файлы представлений для этого контроллера. По умолчанию возвращает 'protected/views/ControllerID'. Дочерние классы могут переопределить этот метод, чтобы использовать настраиваемый путь к представлениям. Если контроллер принадлежит модулю, путь по умолчанию — путь к представлениям модуля module view path, дополненный идентификатором контроллера.
Подробное описание методов
__construct() метод
public void __construct(string $id, CWebModule $module=NULL) | ||
| $id | string | идентификатор этого контроллера |
| $module | CWebModule | модуль, к которому принадлежит этот контроллер. |
public function __construct($id,$module=null)
{
$this->_id=$id;
$this->_module=$module;
$this->attachBehaviors($this->behaviors());
}
accessRules() метод
public array accessRules() | ||
| {return} | array | список правил доступа. Подробнее см. CAccessControlFilter. |
public function accessRules()
{
return array();
}
Возвращает правила доступа для этого контроллера. Переопределите этот метод, если вы используете фильтр accessControl.
actions() метод
public array actions() | ||
| {return} | массив | список внешних классов действий |
public function actions()
{
return array();
}
Возвращает список внешних классов действий. Ключи массива — идентификаторы действий, а значения — соответствующие классы действий в точечной нотации (например, 'edit'=>'application.controllers.article.EditArticle') или массивы, представляющие конфигурацию действий, например:
return array(
'action1'=>'path.to.Action1Class',
'action2'=>array(
'class'=>'path.to.Action2Class',
'property1'=>'value1',
'property2'=>'value2',
),
);
Производные классы могут переопределить этот метод для объявления внешних действий. Обратите внимание, для наследования действий, определённых в родительском классе, дочерний класс должен объединить родительские действия с собственными действиями, используя функции, такие как array_merge().
Вы можете импортировать действия из поставщика действий (например, виджета, см. CWidget::actions), как в примере ниже:
return array(
...other actions...
// import actions declared in ProviderClass::actions()
// the action IDs will be prefixed with 'pro.'
'pro.'=>'path.to.ProviderClass',
// similar as above except that the imported actions are
// configured with the specified initial property values
'pro2.'=>array(
'class'=>'path.to.ProviderClass',
'action1'=>array(
'property1'=>'value1',
),
'action2'=>array(
'property2'=>'value2',
),
),
)
В примере выше мы различаем поставщиков действий от других объявлений действий по ключам массива. Для поставщиков действий ключи массива должны содержать точку. В результате идентификатор действия 'pro2.action1' будет разрешён как действие 'action1', объявленное в 'ProviderClass'.
См. также
afterAction() метод
protected void afterAction(CAction $action) | ||
| $action | CAction | выполненное действие. |
protected function afterAction($action)
{
}
Этот метод вызывается сразу после выполнения действия. Вы можете переопределить этот метод, чтобы выполнить некоторую постобработку действия.
afterRender() метод (доступен с версии v1.1.5)
protected void afterRender(string $view, string &$output) | ||
| $view | строка | отображенный вид. |
| $output | строка | результат рендеринга представления. Обратите внимание, что этот параметр передаётся по ссылке. Это означает, что вы можете его изменить в этом методе. |
protected function afterRender($view, &$output)
{
}
Этот метод вызывается после рендеринга указанного представления с помощью вызова render(). Обратите внимание, что этот метод вызывается ДО processOutput(). Вы можете переопределить этот метод, чтобы выполнить некоторую постобработку рендеринга представления.
beforeAction() метод
protected boolean beforeAction(CAction $action) | ||
| $action | CAction | действие, подлежащее выполнению. |
| {return} | булево | выполнять ли действие. |
protected function beforeAction($action)
{
return true;
}
Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку действия в последний момент.
beforeRender() метод (доступен с версии v1.1.5)
protected boolean beforeRender(string $view) | ||
| $view | строка | отображаемое представление. |
| {return} | булево | отображать ли представление. |
protected function beforeRender($view)
{
return true;
}
Этот метод вызывается в начале render(). Вы можете переопределить этот метод, чтобы выполнить предварительную обработку при рендеринге представления.
behaviors() метод
public array behaviors() | ||
| {return} | массив | конфигурации поведения (имя поведения=>конфигурация поведения) |
public function behaviors()
{
return array();
}
Возвращает список поведений, которые должен иметь данный контроллер. Возвращаемое значение должно быть массивом конфигураций поведения, индексированных именами поведений. Каждая конфигурация поведения может быть либо строкой, задающей класс поведения, либо массивом следующей структуры:
'behaviorName'=>array(
'class'=>'path.to.BehaviorClass',
'property1'=>'value1',
'property2'=>'value2',
)
Обратите внимание, что классы поведения должны реализовывать IBehavior или наследоваться от CBehavior. Поведения, объявленные в этом методе, будут прикреплены к контроллеру при его создании.
Для получения дополнительной информации о поведении см. CComponent.
clearPageStates() метод
public void clearPageStates() |
public function clearPageStates()
{
$this->_pageStates=array();
}
Удаляет все состояния страницы.
createAbsoluteUrl() метод
public string createAbsoluteUrl(string $route, array $params=array ( ), string $schema='', string $ampersand='&') | ||
| $route | строка | маршрут URL. Он должен быть в формате 'ControllerID/ActionID'. Если ControllerPath отсутствует, к маршруту будет добавлен текущий идентификатор контроллера. Если маршрут пуст, предполагается, что это текущее действие. |
| $params | массив | дополнительные параметры GET (имя=>значение). И имя, и значение будут закодированы по URL. |
| $schema | строка | использовать схему (например, http, https). Если пусто, будет использоваться схема, используемая для текущего запроса. |
| $ampersand | строка | символ, разделяющий пары имя-значение в URL. |
| {return} | строка | сформированный URL |
public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&')
{
$url=$this->createUrl($route,$params,$ampersand);
if(strpos($url,'http')===0)
return $url;
else
return Yii::app()->getRequest()->getHostInfo($schema).$url;
}
Создаёт абсолютный URL для указанного действия, определённого в этом контроллере.
createAction() метод
public CAction createAction(string $actionID) | ||
| $actionID | строка | идентификатор действия. Если пусто, будет использоваться по умолчанию. |
| {return} | CAction | экземпляр действия, null, если действие не существует. |
public function createAction($actionID)
{
if($actionID==='')
$actionID=$this->defaultAction;
if(method_exists($this,'action'.$actionID) && strcasecmp($actionID,'s')) // we have actions method
return new CInlineAction($this,$actionID);
else
{
$action=$this->createActionFromMap($this->actions(),$actionID,$actionID);
if($action!==null && !method_exists($action,'run'))
throw new CException(Yii::t('yii', 'Action class {class} must implement the "run" method.', array('{class}'=>get_class($action))));
return $action;
}
}
Создаёт экземпляр действия на основе имени действия. Действие может быть внутренним действием или объектом. Последний создаётся путём поиска в карте действий, указанной в actions.
См. также
createActionFromMap() метод
protected CAction createActionFromMap(array $actionMap, string $actionID, string $requestActionID, array $config=array ( )) | ||
| $actionMap | массив | карта действий |
| $actionID | строка | идентификатор действия с удалённым префиксом |
| $requestActionID | строка | исходный запрошенный идентификатор действия |
| $config | массив | конфигурация действия, которая должна быть применена поверх конфигурации, указанной в карте |
| {return} | CAction | экземпляр действия, null, если действие не существует. |
protected function createActionFromMap($actionMap,$actionID,$requestActionID,$config=array())
{
if(($pos=strpos($actionID,'.'))===false && isset($actionMap[$actionID]))
{
$baseConfig=is_array($actionMap[$actionID]) ? $actionMap[$actionID] : array('class'=>$actionMap[$actionID]);
return Yii::createComponent(empty($config)?$baseConfig:array_merge($baseConfig,$config),$this,$requestActionID);
}
elseif($pos===false)
return null;
// the action is defined in a provider
$prefix=substr($actionID,0,$pos+1);
if(!isset($actionMap[$prefix]))
return null;
$actionID=(string)substr($actionID,$pos+1);
$provider=$actionMap[$prefix];
if(is_string($provider))
$providerType=$provider;
elseif(is_array($provider) && isset($provider['class']))
{
$providerType=$provider['class'];
if(isset($provider[$actionID]))
{
if(is_string($provider[$actionID]))
$config=array_merge(array('class'=>$provider[$actionID]),$config);
else
$config=array_merge($provider[$actionID],$config);
}
}
else
throw new CException(Yii::t('yii','Object configuration must be an array containing a "class" element.'));
$class=Yii::import($providerType,true);
$map=call_user_func(array($class,'actions'));
return $this->createActionFromMap($map,$actionID,$requestActionID,$config);
}
Создаёт экземпляр действия на основе карты действий. Этот метод проверяет, присутствует ли идентификатор действия в заданной карте действий. Если да, то соответствующая конфигурация используется для создания экземпляра действия.
createUrl() метод
public string createUrl(string $route, array $params=array ( ), string $ampersand='&') | ||
| $route | string | маршрут URL. Должен быть в формате 'ControllerID/ActionID'. Если ControllerID отсутствует, текущий идентификатор контроллера будет добавлен в начало маршрута. Если маршрут пустой, предполагается, что это текущее действие. Если контроллер принадлежит модулю, идентификатор модуля будет добавлен в начало маршрута. (Если вы не хотите префикс идентификатора модуля, маршрут должен начинаться с косой черты '/'). |
| $params | array | дополнительные параметры GET (имя=>значение). И имя, и значение будут закодированы в URL. Если имя равно '#', соответствующее значение будет обработано как якорь и будет добавлено в конец URL. |
| $ampersand | string | разделитель пар имя-значение в URL. |
| {return} | string | сформированный URL |
public function createUrl($route,$params=array(),$ampersand='&')
{
if($route==='')
$route=$this->getId().'/'.$this->getAction()->getId();
elseif(strpos($route,'/')===false)
$route=$this->getId().'/'.$route;
if($route[0]!=='/' && ($module=$this->getModule())!==null)
$route=$module->getId().'/'.$route;
return Yii::app()->createUrl(trim($route,'/'),$params,$ampersand);
}
Создаёт относительный URL для указанного действия, определённого в этом контроллере.
filterAccessControl() метод
public void filterAccessControl(CFilterChain $filterChain) | ||
| $filterChain | CFilterChain | цепочка фильтров, на которой находится фильтр. |
public function filterAccessControl($filterChain)
{
$filter=new CAccessControlFilter;
$filter->setRules($this->accessRules());
$filter->filter($filterChain);
}
Метод-фильтр для фильтра 'accessControl'. Этот фильтр является обёрткой для CAccessControlFilter. Для использования этого фильтра, необходимо переопределить метод accessRules.
filterAjaxOnly() метод
public void filterAjaxOnly(CFilterChain $filterChain) | ||
| $filterChain | CFilterChain | цепочка фильтров, на которой находится фильтр. |
public function filterAjaxOnly($filterChain)
{
if(Yii::app()->getRequest()->getIsAjaxRequest())
$filterChain->run();
else
throw new CHttpException(400,Yii::t('yii','Your request is invalid.'));
}
Метод-фильтр для фильтра 'ajaxOnly'. Этот фильтр выбрасывает исключение (CHttpException с кодом 400), если применённое действие получает не AJAX-запрос.
filterPostOnly() метод
public void filterPostOnly(CFilterChain $filterChain) | ||
| $filterChain | CFilterChain | цепочка фильтров, на которой находится фильтр. |
public function filterPostOnly($filterChain)
{
if(Yii::app()->getRequest()->getIsPostRequest())
$filterChain->run();
else
throw new CHttpException(400,Yii::t('yii','Your request is invalid.'));
}
Метод-фильтр для фильтра 'postOnly'. Этот фильтр выбрасывает исключение (CHttpException с кодом 400), если применённое действие получает не POST-запрос.
filters() метод
public array filters() | ||
| {return} | array | список конфигураций фильтров. |
public function filters()
{
return array();
}
Возвращает конфигурации фильтров.
Переопределяя этот метод, дочерние классы могут указывать фильтры, которые должны применяться к действиям.
Этот метод возвращает массив спецификаций фильтров. Каждый элемент массива определяет один фильтр.
Для метода-фильтра (также называемого встроенным фильтром), он указывается как 'ИмяФильтра[ +|- Действие1, Действие2, ...]'. Операторы '+' ('-') описывают, какие действия должны быть (не должны быть) применены с фильтром.
Для класса-фильтра, он указывается как массив следующего вида:
array(
'FilterClass[ +|- Action1, Action2, ...]',
'name1'=>'value1',
'name2'=>'value2',
...
)
где пары имя-значение будут использованы для инициализации свойств фильтра. Обратите внимание, чтобы унаследовать фильтры, определённые в родительском классе, дочерний класс должен объединить родительские фильтры с дочерними, используя функции, такие как array_merge().
См. также
forward() метод (доступен с версии 1.1.0)
public void forward(string $route, boolean $exit=true) | ||
| $route | string | маршрут действия нового контроллера. Может быть ID действия или полный маршрут с (необязательным в текущем модуле) идентификатором модуля, контроллера и действия. Если это ID действия, предполагается, что действие расположено в текущем контроллере. |
| $exit | boolean | выполнить ли выход из приложения после этого вызова. По умолчанию true. |
public function forward($route,$exit=true)
{
if(strpos($route,'/')===false)
$this->run($route);
else
{
if($route[0]!=='/' && ($module=$this->getModule())!==null)
$route=$module->getId().'/'.$route;
Yii::app()->runController($route);
}
if($exit)
Yii::app()->end();
}
Обрабатывает запрос с использованием действия другого контроллера. Это похоже на redirect, но URL в браузере пользователя остаётся неизменным. В большинстве случаев следует использовать redirect вместо этого метода.
getAction() метод
public CAction getAction() | ||
| {return} | CAction | действие, которое в данный момент выполняется, null, если активного действия нет. |
public function getAction()
{
return $this->_action;
}
getActionParams() метод (доступен с версии 1.1.7)
public array getActionParams() | ||
| {return} | array | параметры запроса, используемые для привязки параметров действия |
public function getActionParams()
{
return $_GET;
}
Возвращает параметры запроса, которые будут использованы для привязки параметров действия. По умолчанию этот метод возвращает $_GET. Можно переопределить этот метод, если нужно использовать другие параметры запроса (например, $_GET+$_POST).
getCachingStack() метод
public CStack getCachingStack(boolean $createIfNull=true) | ||
| $createIfNull | boolean | создать стек, если он ещё не существует. По умолчанию true. |
| {return} | CStack | стек объектов COutputCache |
public function getCachingStack($createIfNull=true)
{
if(!$this->_cachingStack)
$this->_cachingStack=new CStack;
return $this->_cachingStack;
}
getClips() метод
public CMap getClips() | ||
| {return} | CMap | список клипов |
public function getClips()
{
if($this->_clips!==null)
return $this->_clips;
else
return $this->_clips=new CMap;
}
Возвращает список клипов. Клип — это именованная часть результата рендеринга, которую можно вставить в разные места.
См. также
getId() метод
public string getId() | ||
| {return} | string | ID контроллера |
public function getId()
{
return $this->_id;
}
getLayoutFile() метод
public string getLayoutFile(mixed $layoutName) | ||
| $layoutName | mixed | имя макета |
| {return} | string | файл представления для макета. False, если файл представления не найден |
public function getLayoutFile($layoutName)
{
if($layoutName===false)
return false;
if(($theme=Yii::app()->getTheme())!==null && ($layoutFile=$theme->getLayoutFile($this,$layoutName))!==false)
return $layoutFile;
if(empty($layoutName))
{
$module=$this->getModule();
while($module!==null)
{
if($module->layout===false)
return false;
if(!empty($module->layout))
break;
$module=$module->getParentModule();
}
if($module===null)
$module=Yii::app();
$layoutName=$module->layout;
}
elseif(($module=$this->getModule())===null)
$module=Yii::app();
return $this->resolveViewFile($layoutName,$module->getLayoutPath(),Yii::app()->getViewPath(),$module->getViewPath());
}
Ищет скрипт представления макета на основе имени макета.
Имя макета может быть указано одним из следующих способов:
- layout ложно: возвращает ложь, означая отсутствие макета.
- layout равно null: будет использован макет текущего активного модуля. Если активного модуля нет, будет использован макет приложения.
- обычное имя представления.
Резолюция файла представления, основанная на представлении макета, аналогична той, что в getViewFile. В частности, следуют этим правилам:
В противном случае этот метод вернёт соответствующий файл представления на основе следующих критериев:
- Если в данный момент активна тема, этот метод вызовет CTheme::getLayoutFile для определения, какой файл представления следует вернуть.
- абсолютное представление внутри модуля: имя представления начинается с одиночного слэша '/'. В этом случае представление будет найдено в пути к представлениям текущего активного модуля. Если активного модуля нет, представление будет найдено в пути к представлениям приложения.
- абсолютное представление внутри приложения: имя представления начинается с двойных слэшей '//'. В этом случае представление будет найдено в пути к представлениям приложения. Этот синтаксис доступен с версии 1.1.3.
- псевдоним представления: имя представления содержит точки и относится к псевдониму пути. Файл представления определяется вызовом YiiBase::getPathOfAlias(). Обратите внимание, что псевдонимизированные представления не могут быть оформлены темой, так как они могут ссылаться на файл представления, расположенный в произвольном месте.
- относительное представление: в противном случае. Относительные представления будут искать в пути к макету текущего активного модуля. Если активного модуля нет, представление будет искать в пути к макету приложения.
После определения файла представления этот метод может дополнительно вызвать CApplication::findLocalizedFile, чтобы найти его локализованную версию, если требуется интернационализация.
getModule() метод
public CWebModule getModule() | ||
| {return} | CWebModule | модуль, к которому принадлежит этот контроллер. Возвращает null, если контроллер не принадлежит ни одному модулю |
public function getModule()
{
return $this->_module;
}
getPageState() метод
public mixed getPageState(string $name, mixed $defaultValue=NULL) | ||
| $name | строка | имя состояния |
| $defaultValue | смешанный тип | значение, которое будет возвращено, если состояние с указанным именем не найдено |
| {return} | смешанный тип | значение состояния страницы |
public function getPageState($name,$defaultValue=null)
{
if($this->_pageStates===null)
$this->_pageStates=$this->loadPageStates();
return isset($this->_pageStates[$name])?$this->_pageStates[$name]:$defaultValue;
}
Возвращает значение состояния страницы, сохраняющееся на протяжении запросов POST на той же странице. Для использования сохраняемых состояний страницы, формы должны быть stateful, которые генерируются с помощью CHtml::statefulForm.
См. также
getPageTitle() метод
public string getPageTitle() | ||
| {return} | строка | заголовок страницы. По умолчанию - имя контроллера и имя действия. |
public function getPageTitle()
{
if($this->_pageTitle!==null)
return $this->_pageTitle;
else
{
$name=ucfirst(basename($this->getId()));
if($this->getAction()!==null && strcasecmp($this->getAction()->getId(),$this->defaultAction))
return $this->_pageTitle=Yii::app()->name.' - '.ucfirst($this->getAction()->getId()).' '.$name;
else
return $this->_pageTitle=Yii::app()->name.' - '.$name;
}
}
getRoute() метод (доступен с версии v1.1.0)
public string getRoute() | ||
| {return} | строка | путь (ID модуля, ID контроллера и ID действия) текущего запроса. |
public function getRoute()
{
if(($action=$this->getAction())!==null)
return $this->getUniqueId().'/'.$action->getId();
else
return $this->getUniqueId();
}
getUniqueId() метод
public string getUniqueId() | ||
| {return} | строка | ID контроллера, дополненный ID модуля (если применимо). |
public function getUniqueId()
{
return $this->_module ? $this->_module->getId().'/'.$this->_id : $this->_id;
}
getViewFile() метод
public string getViewFile(string $viewName) | ||
| $viewName | строка | имя представления |
| {return} | строка | путь к файлу представления, ложь, если файл представления не существует |
public function getViewFile($viewName)
{
if(($theme=Yii::app()->getTheme())!==null && ($viewFile=$theme->getViewFile($this,$viewName))!==false)
return $viewFile;
$moduleViewPath=$basePath=Yii::app()->getViewPath();
if(($module=$this->getModule())!==null)
$moduleViewPath=$module->getViewPath();
return $this->resolveViewFile($viewName,$this->getViewPath(),$basePath,$moduleViewPath);
}
Ищет файл представления по заданному имени представления.
Если в данный момент активна тема, этот метод вызовет CTheme::getViewFile для определения, какой файл представления следует вернуть.
В противном случае этот метод вернёт соответствующий файл представления на основе следующих критериев:
- абсолютное представление внутри модуля: имя представления начинается с одиночного слэша '/'. В этом случае представление будет найдено в пути к представлениям текущего активного модуля. Если активного модуля нет, представление будет найдено в пути к представлениям приложения.
- абсолютное представление внутри приложения: имя представления начинается с двойных слэшей '//'. В этом случае представление будет найдено в пути к представлениям приложения. Этот синтаксис доступен с версии 1.1.3.
- псевдоним представления: имя представления содержит точки и относится к псевдониму пути. Файл представления определяется вызовом YiiBase::getPathOfAlias(). Обратите внимание, что псевдонимизированные представления не могут быть оформлены темой, так как они могут ссылаться на файл представления, расположенный в произвольном месте.
- относительное представление: в противном случае. Относительные представления будут искать в пути к представлениям текущего активного контроллера.
После определения файла представления этот метод может дополнительно вызвать CApplication::findLocalizedFile, чтобы найти его локализованную версию, если требуется интернационализация.
getViewPath() метод
public string getViewPath() | ||
| {return} | строка | директория, содержащая файлы представлений для этого контроллера. По умолчанию 'protected/views/ControllerID'. |
public function getViewPath()
{
if(($module=$this->getModule())===null)
$module=Yii::app();
return $module->getViewPath().DIRECTORY_SEPARATOR.$this->getId();
}
Возвращает директорию, содержащую файлы представлений для этого контроллера. По умолчанию возвращает 'protected/views/ControllerID'. Дочерние классы могут переопределить этот метод для использования настраиваемого пути к представлениям. Если контроллер принадлежит модулю, путь к представлениям по умолчанию — это путь к представлениям модуля, дополненный ID контроллера.
init() метод
public void init() |
Инициализирует контроллер. Этот метод вызывается приложением перед началом выполнения контроллера. Вы можете переопределить этот метод, чтобы выполнить необходимую инициализацию для контроллера.
invalidActionParams() метод (доступен с версии v1.1.7)
public void invalidActionParams(CAction $action) | ||
| $action | CAction | выполняемое действие |
public function invalidActionParams($action)
{
throw new CHttpException(400,Yii::t('yii','Your request is invalid.'));
}
Этот метод вызывается, когда параметры запроса не соответствуют требованиям указанного действия. По умолчанию будет выброшено исключение HTTP 400.
isCachingStackEmpty() метод
public boolean isCachingStackEmpty() | ||
| {return} | логический тип | пуста ли стек кэширования. Если не пуста, это означает, что в данный момент действуют какие-то кэши вывода. Обратите внимание, что результат возвращаемого значения этого метода может изменяться при вызове в разных областях вывода, в зависимости от разбиения кэшей вывода. |
public function isCachingStackEmpty()
{
return $this->_cachingStack===null || !$this->_cachingStack->getCount();
}
Возвращает, пуста ли стековая кэш-память.
loadPageStates() метод
protected array loadPageStates() | ||
| {return} | массив | загруженные состояния страниц |
protected function loadPageStates()
{
if(!empty($_POST[self::STATE_INPUT_NAME]))
{
if(($data=base64_decode($_POST[self::STATE_INPUT_NAME]))!==false)
{
if(extension_loaded('zlib'))
$data=@gzuncompress($data);
if(($data=Yii::app()->getSecurityManager()->validateData($data))!==false)
return unserialize($data);
}
}
return array();
}
Загружает состояния страниц из скрытого поля ввода.
missingAction() метод
public void missingAction(string $actionID) | ||
| $actionID | строка | имя отсутствующего действия |
public function missingAction($actionID)
{
throw new CHttpException(404,Yii::t('yii','The system is unable to find the requested action "{action}".',
array('{action}'=>$actionID==''?$this->defaultAction:$actionID)));
}
Обрабатывает запрос, действие которого не распознано. Этот метод вызывается, когда контроллер не может найти запрошенное действие. По умолчанию он просто генерирует исключение.
processDynamicOutput() метод
public string processDynamicOutput(string $output) | ||
| $output | строка | вывод для обработки |
| {return} | строка | обработанный вывод |
public function processDynamicOutput($output)
{
if($this->_dynamicOutput)
{
$output=preg_replace_callback('/<###dynamic-(\d+)###>/',array($this,'replaceDynamicOutput'),$output);
}
return $output;
}
Последовательно обрабатывает динамический вывод. Этот метод используется внутренне. Не вызывайте этот метод напрямую.
processOutput() метод
public string processOutput(string $output) | ||
| $output | строка | выход, сгенерированный текущим действием |
| {return} | строка | обработанный вывод. |
public function processOutput($output)
{
Yii::app()->getClientScript()->render($output);
// if using page caching, we should delay dynamic output replacement
if($this->_dynamicOutput!==null && $this->isCachingStackEmpty())
{
$output=$this->processDynamicOutput($output);
$this->_dynamicOutput=null;
}
if($this->_pageStates===null)
$this->_pageStates=$this->loadPageStates();
if(!empty($this->_pageStates))
$this->savePageStates($this->_pageStates,$output);
return $output;
}
Последовательно обрабатывает выход, сгенерированный render(). Этот метод вызывается в конце render() и renderText(). Если зарегистрированы клиентские скрипты, этот метод вставит их в выход в соответствующих местах. Если есть динамическое содержимое, оно также будет вставлено. Этот метод также может сохранить постоянные состояния страниц в скрытых полях состоятельных форм на странице.
recordCachingAction() метод
public void recordCachingAction(string $context, string $method, array $params) | ||
| $context | строка | имя свойства контроллера. Оно ссылается на объект, метод которого вызывается. Если пусто, то означает сам контроллер. |
| $method | строка | имя метода |
| $params | массив | параметры, передаваемые методу |
public function recordCachingAction($context,$method,$params)
{
if($this->_cachingStack) // record only when there is an active output cache
{
foreach($this->_cachingStack as $cache)
$cache->recordAction($context,$method,$params);
}
}
Записывает вызов метода, когда активен кэш вывода. Когда содержимое выдается из кэша вывода, записанный метод будет повторно вызван.
См. также
redirect() метод
public void redirect(mixed $url, boolean $terminate=true, integer $statusCode=302) | ||
| $url | смешанный | URL, на который нужно перенаправить. Если параметр является массивом, первый элемент должен быть маршрутом к действию контроллера, а остальные — параметрами GET в парах имя-значение. |
| $terminate | булево | нужно ли завершить текущее приложение после вызова этого метода. По умолчанию — true. |
| $statusCode | целое | код HTTP-статуса. По умолчанию — 302. Подробности о кодах HTTP-статуса см. в http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. |
public function redirect($url,$terminate=true,$statusCode=302)
{
if(is_array($url))
{
$route=isset($url[0]) ? $url[0] : '';
$url=$this->createUrl($route,array_splice($url,1));
}
Yii::app()->getRequest()->redirect($url,$terminate,$statusCode);
}
Перенаправляет браузер на указанный URL или маршрут (контроллер/действие).
refresh() метод
public void refresh(boolean $terminate=true, string $anchor='') | ||
| $terminate | булево | нужно ли завершить текущее приложение после вызова этого метода |
| $anchor | строка | якорь, который должен быть добавлен к URL перенаправления. По умолчанию пустая строка. Убедитесь, что якорь начинается с '#' если вы хотите его указать. |
public function refresh($terminate=true,$anchor='')
{
$this->redirect(Yii::app()->getRequest()->getUrl().$anchor,$terminate);
}
Обновляет текущую страницу. Эффект этого вызова метода аналогичен нажатию пользователем кнопки обновления в браузере (без данных POST).
render() метод
public string render(string $view, array $data=NULL, boolean $return=false) | ||
| $view | строка | имя представления для отрисовки. См. getViewFile для подробностей о том, как разрешается сценарий представления. |
| $data | массив | данные, которые должны быть извлечены в PHP-переменные и сделаны доступными для сценария представления |
| $return | булево | нужно ли вернуть результат рендеринга вместо отображения его пользователям. |
| {return} | строка | результат рендеринга. Null, если результат рендеринга не требуется. |
public function render($view,$data=null,$return=false)
{
if($this->beforeRender($view))
{
$output=$this->renderPartial($view,$data,true);
if(($layoutFile=$this->getLayoutFile($this->layout))!==false)
$output=$this->renderFile($layoutFile,array('content'=>$output),true);
$this->afterRender($view,$output);
$output=$this->processOutput($output);
if($return)
return $output;
else
echo $output;
}
}
Отображает представление с макетом.
Этот метод сначала вызывает renderPartial для рендеринга представления (называемого представлением содержимого). Затем он отображает представление макета, которое может встраивать представление содержимого в нужном месте. В представлении макета результат рендеринга представления содержимого доступен через переменную $content. В конце он вызывает processOutput для вставки скриптов и динамического содержимого, если они доступны.
По умолчанию, сценарий представления макета — "protected/views/layouts/main.php". Это можно настроить, изменив layout.
См. также
renderClip() метод (доступен с версии v1.1.8)
public mixed renderClip(string $name, array $params=array ( ), boolean $return=false) | ||
| $name | строка | имя клипа |
| $params | массив | массив именованных параметров (имя=>значение), которые должны заменить соответствующие заглушки в клипе |
| $return | булево | нужно ли вернуть содержимое клипа или вывести его |
| {return} | смешанный | либо содержимое клипа, либо null |
public function renderClip($name,$params=array(),$return=false)
{
$text=isset($this->clips[$name]) ? strtr($this->clips[$name], $params) : '';
if($return)
return $text;
else
echo $text;
}
Отображает именованный клип с предоставленными параметрами. Это аналогично прямому доступу к свойству clips. Основное отличие в том, что он может принимать массив именованных параметров, которые будут заменять соответствующие заглушки в клипе.
renderDynamic() метод
public void renderDynamic(callback $callback) | ||
| $callback | обратный вызов | PHP-обратный вызов, который возвращает необходимое динамическое содержимое. Когда обратный вызов указан как строка, он сначала предполагается в качестве метода текущего класса контроллера. Если метод не существует, он предполагается как глобальная PHP-функция. Обратите внимание, что обратный вызов должен возвращать динамическое содержимое, а не выводить его. |
public function renderDynamic($callback)
{
$n=count($this->_dynamicOutput);
echo "<###dynamic-$n###>";
$params=func_get_args();
array_shift($params);
$this->renderDynamicInternal($callback,$params);
}
Отображает динамическое содержимое, возвращаемое указанной функцией обратного вызова. Этот метод используется совместно с COutputCache. Динамическое содержимое всегда будет отображаться в последнем состоянии, даже если окружающее его содержимое кэшируется. Это особенно полезно при кэшировании страниц, которые в основном статичны, но содержат некоторые небольшие динамические области, такие как имя пользователя или текущее время. Мы можем использовать этот метод для отображения этих динамических областей, чтобы гарантировать их актуальность.
Первый параметр этого метода должен быть корректной функцией обратного вызова PHP, а остальные параметры будут переданы в функцию обратного вызова.
Обратите внимание, что функция обратного вызова и её параметры будут сериализованы и сохранены в кэше. Убедитесь, что они сериализуемы.
renderDynamicInternal() метод
public void renderDynamicInternal(callback $callback, array $params) | ||
| $callback | callback | функция обратного вызова PHP, которая возвращает необходимое динамическое содержимое. |
| $params | array | параметры, передаваемые в функцию обратного вызова PHP |
public function renderDynamicInternal($callback,$params)
{
$this->recordCachingAction('','renderDynamicInternal',array($callback,$params));
if(is_string($callback) && method_exists($this,$callback))
$callback=array($this,$callback);
$this->_dynamicOutput[]=call_user_func_array($callback,$params);
}
Этот метод используется внутри.
См. также
renderPartial() метод
public string renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false) | ||
| $view | string | имя представления для отображения. См. getViewFile для получения подробностей о том, как разрешается сценарий представления. |
| $data | array | данные, которые будут извлечены в переменные PHP и доступны сценарию представления |
| $return | boolean | необходимо ли вернуть результат рендеринга, а не отображать его пользователям |
| $processOutput | boolean | необходимо ли обработать результат рендеринга с помощью processOutput. |
| {return} | string | результат рендеринга. Нулевое значение, если результат рендеринга не требуется. |
public function renderPartial($view,$data=null,$return=false,$processOutput=false)
{
if(($viewFile=$this->getViewFile($view))!==false)
{
$output=$this->renderFile($viewFile,$data,true);
if($processOutput)
$output=$this->processOutput($output);
if($return)
return $output;
else
echo $output;
}
else
throw new CException(Yii::t('yii','{controller} cannot find the requested view "{view}".',
array('{controller}'=>get_class($this), '{view}'=>$view)));
}
Отображает представление.
Указанное представление относится к скрипту PHP (разрешается с помощью getViewFile), который включается этим методом. Если $data является ассоциативным массивом, он будет извлечён как переменные PHP и доступен в скрипте.
Этот метод отличается от render() тем, что не применяет макет к результату рендеринга. Таким образом, он в основном используется для рендеринга частичного представления или ответа AJAX.
См. также
renderText() метод
public string renderText(string $text, boolean $return=false) | ||
| $text | string | строка статического текста |
| $return | boolean | необходимо ли вернуть результат рендеринга, а не отображать его пользователям. |
| {return} | string | результат рендеринга. Нулевое значение, если результат рендеринга не требуется. |
public function renderText($text,$return=false)
{
if(($layoutFile=$this->getLayoutFile($this->layout))!==false)
$text=$this->renderFile($layoutFile,array('content'=>$text),true);
$text=$this->processOutput($text);
if($return)
return $text;
else
echo $text;
}
Отображает строку статического текста. Строка будет вставлена в текущий макет контроллера и возвращена.
См. также
replaceDynamicOutput() метод
protected string replaceDynamicOutput(array $matches) | ||
| $matches | array | совпадения |
| {return} | string | замена |
protected function replaceDynamicOutput($matches)
{
$content=$matches[0];
if(isset($this->_dynamicOutput[$matches[1]]))
{
$content=$this->_dynamicOutput[$matches[1]];
$this->_dynamicOutput[$matches[1]]=null;
}
return $content;
}
Заменяет заполнитель динамического содержимого фактическим содержимым. Это функция обратного вызова, используемая внутри.
См. также
resolveViewFile() метод
public mixed resolveViewFile(string $viewName, string $viewPath, string $basePath, string $moduleViewPath=NULL) | ||
| $viewName | string | имя представления |
| $viewPath | string | каталог, используемый для поиска относительного имени представления |
| $basePath | string | каталог, используемый для поиска абсолютного имени представления в приложении |
| $moduleViewPath | string | каталог, используемый для поиска абсолютного имени представления в текущем модуле. Если это не установлено, будет использоваться базовый путь представления приложения. |
| {return} | mixed | путь к файлу представления. Ложь, если файл представления не существует. |
public function resolveViewFile($viewName,$viewPath,$basePath,$moduleViewPath=null)
{
if(empty($viewName))
return false;
if($moduleViewPath===null)
$moduleViewPath=$basePath;
if(($renderer=Yii::app()->getViewRenderer())!==null)
$extension=$renderer->fileExtension;
else
$extension='.php';
if($viewName[0]==='/')
{
if(strncmp($viewName,'//',2)===0)
$viewFile=$basePath.$viewName;
else
$viewFile=$moduleViewPath.$viewName;
}
elseif(strpos($viewName,'.'))
$viewFile=Yii::getPathOfAlias($viewName);
else
$viewFile=$viewPath.DIRECTORY_SEPARATOR.$viewName;
if(is_file($viewFile.$extension))
return Yii::app()->findLocalizedFile($viewFile.$extension);
elseif($extension!=='.php' && is_file($viewFile.'.php'))
return Yii::app()->findLocalizedFile($viewFile.'.php');
else
return false;
}
Находит файл представления по его имени. Имя представления может быть в одном из следующих форматов:
- абсолютное представление в модуле: имя представления начинается с одного слэша '/'. В этом случае представление будет искаться в пути представления текущего активного модуля. Если активного модуля нет, представление будет искаться в пути представления приложения.
- абсолютное представление в приложении: имя представления начинается с двух слэшей '//'. В этом случае представление будет искаться в пути представления приложения. Этот синтаксис доступен с версии 1.1.3.
- алиасированное представление: имя представления содержит точки и относится к пути алиаса. Файл представления определяется вызовом YiiBase::getPathOfAlias(). Обратите внимание, что алиасированные представления не могут быть тематическими, так как они могут ссылаться на файл представления, расположенный в произвольных местах.
- относительное представление: в противном случае. Относительные представления будут искаться в пути представления текущего активного контроллера.
run() метод
public void run(string $actionID) | ||
| $actionID | string | ID действия |
public function run($actionID)
{
if(($action=$this->createAction($actionID))!==null)
{
if(($parent=$this->getModule())===null)
$parent=Yii::app();
if($parent->beforeControllerAction($this,$action))
{
$this->runActionWithFilters($action,$this->filters());
$parent->afterControllerAction($this,$action);
}
}
else
$this->missingAction($actionID);
}
Выполняет указанное действие. Фильтры, определённые с помощью filters(), будут применены.
См. также
runAction() метод
public void runAction(CAction $action) | ||
| $action | CAction | действие для выполнения |
public function runAction($action)
{
$priorAction=$this->_action;
$this->_action=$action;
if($this->beforeAction($action))
{
if($action->runWithParams($this->getActionParams())===false)
$this->invalidActionParams($action);
else
$this->afterAction($action);
}
$this->_action=$priorAction;
}
Выполняет действие после прохождения всех фильтров. Этот метод вызывается runActionWithFilters после выполнения всех возможных фильтров и начала выполнения действия.
runActionWithFilters() метод
public void runActionWithFilters(CAction $action, array $filters) | ||
| $action | CAction | действие, которое необходимо выполнить. |
| $filters | array | список фильтров, которые необходимо применить к действию. |
public function runActionWithFilters($action,$filters)
{
if(empty($filters))
$this->runAction($action);
else
{
$priorAction=$this->_action;
$this->_action=$action;
CFilterChain::create($this,$action,$filters)->run();
$this->_action=$priorAction;
}
}
Выполняет действие с указанными фильтрами. Цепочка фильтров будет создана на основе указанных фильтров, а затем действие будет выполнено.
См. также
savePageStates() метод
protected void savePageStates(array $states, string &$output) | ||
| $states | массив | сохраняемые состояния. |
| $output | строка | вывод, который нужно изменить. Обратите внимание, что он передаётся по ссылке. |
protected function savePageStates($states,&$output)
{
$data=Yii::app()->getSecurityManager()->hashData(serialize($states));
if(extension_loaded('zlib'))
$data=gzcompress($data);
$value=base64_encode($data);
$output=str_replace(CHtml::pageStateField(''),CHtml::pageStateField($value),$output);
}
Сохраняет состояния страницы в виде строки base64.
setAction() метод
public void setAction(CAction $value) | ||
| $value | CAction | действие, которое выполняется в данный момент. |
public function setAction($value)
{
$this->_action=$value;
}
setPageState() метод
public void setPageState(string $name, mixed $value, mixed $defaultValue=NULL) | ||
| $name | строка | имя состояния. |
| $value | смешанный тип | значение состояния страницы. |
| $defaultValue | смешанный тип | Значение состояния по умолчанию для страницы. Если оно совпадает с заданным значением, состояние будет удалено из постоянного хранилища. |
public function setPageState($name,$value,$defaultValue=null)
{
if($this->_pageStates===null)
$this->_pageStates=$this->loadPageStates();
if($value===$defaultValue)
unset($this->_pageStates[$name]);
else
$this->_pageStates[$name]=$value;
$params=func_get_args();
$this->recordCachingAction('','setPageState',$params);
}
Сохраняет значение состояния страницы в постоянном хранилище. Состояние страницы — это переменная, сохраняющаяся между запросами POST на одной и той же странице. Для использования постоянных состояний страницы формы должны быть состоятельными, что достигается с помощью CHtml::statefulForm.
См. также
setPageTitle() метод
public void setPageTitle(string $value) | ||
| $value | строка | заголовок страницы. |
public function setPageTitle($value)
{
$this->_pageTitle=$value;
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CController