Spec-Zone.ru › Yii 1.1

CController

Пакет system.web
Наследование class CController » CBaseController » CComponent
Подклассы CCodeGenerator, CExtController
С тех пор 1.0
Исходный код framework/web/CController.php
CController управляет набором действий, которые обрабатывают соответствующие запросы пользователя.

Через действия 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()

Возвращает список фрагментов. Фрагмент — именованная часть результата отображения, которая может быть вставлена в разные места.

См. также

  • CClipWidget

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 модуль, к которому принадлежит этот контроллер.
Исходный код: framework/web/CController.php#110 (показать)
public function __construct($id,$module=null)
{
    
$this->_id=$id;
    
$this->_module=$module;
    
$this->attachBehaviors($this->behaviors());
}

accessRules() метод

public array accessRules()
{return} array список правил доступа. Подробнее см. CAccessControlFilter.
Исходный код: framework/web/CController.php#243 (показать)
public function accessRules()
{
    return array();
}

Возвращает правила доступа для этого контроллера. Переопределите этот метод, если вы используете фильтр accessControl.

actions() метод

public array actions()
{return} массив список внешних классов действий
Исходный код: framework/web/CController.php#208 (показать)
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'.

См. также

  • createAction

afterAction() метод

protected void afterAction(CAction $action)
$action CAction выполненное действие.
Исходный код: framework/web/CController.php#1106 (показать)
protected function afterAction($action)
{
}

Этот метод вызывается сразу после выполнения действия. Вы можете переопределить этот метод, чтобы выполнить некоторую постобработку действия.

afterRender() метод (доступен с версии v1.1.5)

protected void afterRender(string $view, string &$output)
$view строка отображенный вид.
$output строка результат рендеринга представления. Обратите внимание, что этот параметр передаётся по ссылке. Это означает, что вы можете его изменить в этом методе.
Исходный код: framework/web/CController.php#821 (показать)
protected function afterRender($view, &$output)
{
}

Этот метод вызывается после рендеринга указанного представления с помощью вызова render(). Обратите внимание, что этот метод вызывается ДО processOutput(). Вы можете переопределить этот метод, чтобы выполнить некоторую постобработку рендеринга представления.

beforeAction() метод

protected boolean beforeAction(CAction $action)
$action CAction действие, подлежащее выполнению.
{return} булево выполнять ли действие.
Исходный код: framework/web/CController.php#1096 (показать)
protected function beforeAction($action)
{
    return 
true;
}

Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку действия в последний момент.

beforeRender() метод (доступен с версии v1.1.5)

protected boolean beforeRender(string $view)
$view строка отображаемое представление.
{return} булево отображать ли представление.
Исходный код: framework/web/CController.php#807 (показать)
protected function beforeRender($view)
{
    return 
true;
}

Этот метод вызывается в начале render(). Вы можете переопределить этот метод, чтобы выполнить предварительную обработку при рендеринге представления.

behaviors() метод

public array behaviors()
{return} массив конфигурации поведения (имя поведения=>конфигурация поведения)
Исходный код: framework/web/CController.php#233 (показать)
public function behaviors()
{
    return array();
}

Возвращает список поведений, которые должен иметь данный контроллер. Возвращаемое значение должно быть массивом конфигураций поведения, индексированных именами поведений. Каждая конфигурация поведения может быть либо строкой, задающей класс поведения, либо массивом следующей структуры:

'behaviorName'=>array(
    'class'=>'path.to.BehaviorClass',
    'property1'=>'value1',
    'property2'=>'value2',
)


Обратите внимание, что классы поведения должны реализовывать IBehavior или наследоваться от CBehavior. Поведения, объявленные в этом методе, будут прикреплены к контроллеру при его создании.

Для получения дополнительной информации о поведении см. CComponent.

clearPageStates() метод

public void clearPageStates()
Исходный код: framework/web/CController.php#1197 (показать)
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
Исходный код: framework/web/CController.php#983 (показать)
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, если действие не существует.
Исходный код: framework/web/CController.php#411 (показать)
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.

См. также

  • actions

createActionFromMap() метод

protected CAction createActionFromMap(array $actionMap, string $actionID, string $requestActionID, array $config=array ( ))
$actionMap массив карта действий
$actionID строка идентификатор действия с удалённым префиксом
$requestActionID строка исходный запрошенный идентификатор действия
$config массив конфигурация действия, которая должна быть применена поверх конфигурации, указанной в карте
{return} CAction экземпляр действия, null, если действие не существует.
Исходный код: framework/web/CController.php#438 (показать)
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
Исходный код: framework/web/CController.php#962 (показать)
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 цепочка фильтров, на которой находится фильтр.
Исходный код: framework/web/CController.php#1144 (показать)
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 цепочка фильтров, на которой находится фильтр.
Исходный код: framework/web/CController.php#1130 (показать)
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 цепочка фильтров, на которой находится фильтр.
Исходный код: framework/web/CController.php#1116 (показать)
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 список конфигураций фильтров.
Исходный код: framework/web/CController.php#153 (показать)
public function filters()
{
    return array();
}

Возвращает конфигурации фильтров.

Переопределяя этот метод, дочерние классы могут указывать фильтры, которые должны применяться к действиям.

Этот метод возвращает массив спецификаций фильтров. Каждый элемент массива определяет один фильтр.

Для метода-фильтра (также называемого встроенным фильтром), он указывается как 'ИмяФильтра[ +|- Действие1, Действие2, ...]'. Операторы '+' ('-') описывают, какие действия должны быть (не должны быть) применены с фильтром.

Для класса-фильтра, он указывается как массив следующего вида:

array(
    'FilterClass[ +|- Action1, Action2, ...]',
    'name1'=>'value1',
    'name2'=>'value2',
    ...
)
где пары имя-значение будут использованы для инициализации свойств фильтра.

Обратите внимание, чтобы унаследовать фильтры, определённые в родительском классе, дочерний класс должен объединить родительские фильтры с дочерними, используя функции, такие как array_merge().

См. также

  • CFilter

forward() метод (доступен с версии 1.1.0)

public void forward(string $route, boolean $exit=true)
$route string маршрут действия нового контроллера. Может быть ID действия или полный маршрут с (необязательным в текущем модуле) идентификатором модуля, контроллера и действия. Если это ID действия, предполагается, что действие расположено в текущем контроллере.
$exit boolean выполнить ли выход из приложения после этого вызова. По умолчанию true.
Исходный код: framework/web/CController.php#747 (показать)
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, если активного действия нет.
Исходный код: framework/web/CController.php#493 (показать)
public function getAction()
{
    return 
$this->_action;
}

getActionParams() метод (доступен с версии 1.1.7)

public array getActionParams()
{return} array параметры запроса, используемые для привязки параметров действия
Исходный код: framework/web/CController.php#323 (показать)
public function getActionParams()
{
    return 
$_GET;
}

Возвращает параметры запроса, которые будут использованы для привязки параметров действия. По умолчанию этот метод возвращает $_GET. Можно переопределить этот метод, если нужно использовать другие параметры запроса (например, $_GET+$_POST).

getCachingStack() метод

public CStack getCachingStack(boolean $createIfNull=true)
$createIfNull boolean создать стек, если он ещё не существует. По умолчанию true.
{return} CStack стек объектов COutputCache
Исходный код: framework/web/CController.php#1072 (показать)
public function getCachingStack($createIfNull=true)
{
    if(!
$this->_cachingStack)
        
$this->_cachingStack=new CStack;
    return 
$this->_cachingStack;
}

getClips() метод

public CMap getClips()
{return} CMap список клипов
Исходный код: framework/web/CController.php#729 (показать)
public function getClips()
{
    if(
$this->_clips!==null)
        return 
$this->_clips;
    else
        return 
$this->_clips=new CMap;
}

Возвращает список клипов. Клип — это именованная часть результата рендеринга, которую можно вставить в разные места.

См. также

  • CClipWidget

getId() метод

public string getId()
{return} string ID контроллера
Исходный код: framework/web/CController.php#509 (показать)
public function getId()
{
    return 
$this->_id;
}

getLayoutFile() метод

public string getLayoutFile(mixed $layoutName)
$layoutName mixed имя макета
{return} string файл представления для макета. False, если файл представления не найден
Исходный код: framework/web/CController.php#636 (показать)
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());
}

Ищет скрипт представления макета на основе имени макета.

Имя макета может быть указано одним из следующих способов:

END_OF_DOCUMENT_MARKER
  • layout ложно: возвращает ложь, означая отсутствие макета.
  • layout равно null: будет использован макет текущего активного модуля. Если активного модуля нет, будет использован макет приложения.
  • обычное имя представления.


Резолюция файла представления, основанная на представлении макета, аналогична той, что в getViewFile. В частности, следуют этим правилам:

В противном случае этот метод вернёт соответствующий файл представления на основе следующих критериев:
  • Если в данный момент активна тема, этот метод вызовет CTheme::getLayoutFile для определения, какой файл представления следует вернуть.
  • абсолютное представление внутри модуля: имя представления начинается с одиночного слэша '/'. В этом случае представление будет найдено в пути к представлениям текущего активного модуля. Если активного модуля нет, представление будет найдено в пути к представлениям приложения.
  • абсолютное представление внутри приложения: имя представления начинается с двойных слэшей '//'. В этом случае представление будет найдено в пути к представлениям приложения. Этот синтаксис доступен с версии 1.1.3.
  • псевдоним представления: имя представления содержит точки и относится к псевдониму пути. Файл представления определяется вызовом YiiBase::getPathOfAlias(). Обратите внимание, что псевдонимизированные представления не могут быть оформлены темой, так как они могут ссылаться на файл представления, расположенный в произвольном месте.
  • относительное представление: в противном случае. Относительные представления будут искать в пути к макету текущего активного модуля. Если активного модуля нет, представление будет искать в пути к макету приложения.


После определения файла представления этот метод может дополнительно вызвать CApplication::findLocalizedFile, чтобы найти его локализованную версию, если требуется интернационализация.

getModule() метод

public CWebModule getModule()
{return} CWebModule модуль, к которому принадлежит этот контроллер. Возвращает null, если контроллер не принадлежит ни одному модулю
Исходный код: framework/web/CController.php#538 (показать)
public function getModule()
{
    return 
$this->_module;
}

getPageState() метод

public mixed getPageState(string $name, mixed $defaultValue=NULL)
$name строка имя состояния
$defaultValue смешанный тип значение, которое будет возвращено, если состояние с указанным именем не найдено
{return} смешанный тип значение состояния страницы
Исходный код: framework/web/CController.php#1162 (показать)
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.

См. также

  • setPageState
  • CHtml::statefulForm

getPageTitle() метод

public string getPageTitle()
{return} строка заголовок страницы. По умолчанию - имя контроллера и имя действия.
Исходный код: framework/web/CController.php#995 (показать)
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 действия) текущего запроса.
Исходный код: framework/web/CController.php#526 (показать)
public function getRoute()
{
    if((
$action=$this->getAction())!==null)
        return 
$this->getUniqueId().'/'.$action->getId();
    else
        return 
$this->getUniqueId();
}

getUniqueId() метод

public string getUniqueId()
{return} строка ID контроллера, дополненный ID модуля (если применимо).
Исходный код: framework/web/CController.php#517 (показать)
public function getUniqueId()
{
    return 
$this->_module ? $this->_module->getId().'/'.$this->_id : $this->_id;
}

getViewFile() метод

public string getViewFile(string $viewName)
$viewName строка имя представления
{return} строка путь к файлу представления, ложь, если файл представления не существует
Исходный код: framework/web/CController.php#587 (показать)
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, чтобы найти его локализованную версию, если требуется интернационализация.

См. также

  • resolveViewFile
  • CApplication::findLocalizedFile

getViewPath() метод

public string getViewPath()
{return} строка директория, содержащая файлы представлений для этого контроллера. По умолчанию 'protected/views/ControllerID'.
Исходный код: framework/web/CController.php#551 (показать)
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()
Исходный код: framework/web/CController.php#122 (показать)
public function init()
{
}

Инициализирует контроллер. Этот метод вызывается приложением перед началом выполнения контроллера. Вы можете переопределить этот метод, чтобы выполнить необходимую инициализацию для контроллера.

invalidActionParams() метод (доступен с версии v1.1.7)

public void invalidActionParams(CAction $action)
$action CAction выполняемое действие
Исходный код: framework/web/CController.php#335 (показать)
public function invalidActionParams($action)
{
    throw new 
CHttpException(400,Yii::t('yii','Your request is invalid.'));
}

Этот метод вызывается, когда параметры запроса не соответствуют требованиям указанного действия. По умолчанию будет выброшено исключение HTTP 400.

isCachingStackEmpty() метод

public boolean isCachingStackEmpty()
{return} логический тип пуста ли стек кэширования. Если не пуста, это означает, что в данный момент действуют какие-то кэши вывода. Обратите внимание, что результат возвращаемого значения этого метода может изменяться при вызове в разных областях вывода, в зависимости от разбиения кэшей вывода.
Исходный код: framework/web/CController.php#1085 (показать)
public function isCachingStackEmpty()
{
    return 
$this->_cachingStack===null || !$this->_cachingStack->getCount();
}

Возвращает, пуста ли стековая кэш-память.

loadPageStates() метод

protected array loadPageStates()
{return} массив загруженные состояния страниц
Исходный код: framework/web/CController.php#1206 (показать)
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 строка имя отсутствующего действия
Исходный код: framework/web/CController.php#484 (показать)
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} строка обработанный вывод
Исходный код: framework/web/CController.php#375 (показать)
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} строка обработанный вывод.
Исходный код: framework/web/CController.php#350 (показать)
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 массив параметры, передаваемые методу
Исходный код: framework/web/CController.php#1059 (показать)
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);
    }
}

Записывает вызов метода, когда активен кэш вывода. Когда содержимое выдается из кэша вывода, записанный метод будет повторно вызван.

См. также

  • COutputCache

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.
Исходный код: framework/web/CController.php#1026 (показать)
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 перенаправления. По умолчанию пустая строка. Убедитесь, что якорь начинается с '#' если вы хотите его указать.
Исходный код: framework/web/CController.php#1044 (показать)
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, если результат рендеринга не требуется.
Исходный код: framework/web/CController.php#781 (показать)
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.

См. также

  • renderPartial
  • getLayoutFile

renderClip() метод (доступен с версии v1.1.8)

public mixed renderClip(string $name, array $params=array ( ), boolean $return=false)
$name строка имя клипа
$params массив массив именованных параметров (имя=>значение), которые должны заменить соответствующие заглушки в клипе
$return булево нужно ли вернуть содержимое клипа или вывести его
{return} смешанный либо содержимое клипа, либо null
Исходный код: framework/web/CController.php#897 (показать)
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-функция. Обратите внимание, что обратный вызов должен возвращать динамическое содержимое, а не выводить его.
Исходный код: framework/web/CController.php#926 (показать)
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
Исходный код: framework/web/CController.php#941 (показать)
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);
}

Этот метод используется внутри.

См. также

  • renderDynamic

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 результат рендеринга. Нулевое значение, если результат рендеринга не требуется.
Исходный код: framework/web/CController.php#868 (показать)
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.

См. также

  • getViewFile
  • processOutput
  • render

renderText() метод

public string renderText(string $text, boolean $return=false)
$text string строка статического текста
$return boolean необходимо ли вернуть результат рендеринга, а не отображать его пользователям.
{return} string результат рендеринга. Нулевое значение, если результат рендеринга не требуется.
Исходный код: framework/web/CController.php#833 (показать)
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;
}

Отображает строку статического текста. Строка будет вставлена в текущий макет контроллера и возвращена.

См. также

  • getLayoutFile

replaceDynamicOutput() метод

protected string replaceDynamicOutput(array $matches)
$matches array совпадения
{return} string замена
Исходный код: framework/web/CController.php#391 (показать)
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;
}

Заменяет заполнитель динамического содержимого фактическим содержимым. Это функция обратного вызова, используемая внутри.

См. также

  • processOutput

resolveViewFile() метод

public mixed resolveViewFile(string $viewName, string $viewPath, string $basePath, string $moduleViewPath=NULL)
$viewName string имя представления
$viewPath string каталог, используемый для поиска относительного имени представления
$basePath string каталог, используемый для поиска абсолютного имени представления в приложении
$moduleViewPath string каталог, используемый для поиска абсолютного имени представления в текущем модуле. Если это не установлено, будет использоваться базовый путь представления приложения.
{return} mixed путь к файлу представления. Ложь, если файл представления не существует.
Исходный код: framework/web/CController.php#690 (показать)
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(). Обратите внимание, что алиасированные представления не могут быть тематическими, так как они могут ссылаться на файл представления, расположенный в произвольных местах.
  • относительное представление: в противном случае. Относительные представления будут искаться в пути представления текущего активного контроллера.
Для абсолютного и относительного представления соответствующий файл представления является файлом PHP, имя которого совпадает с именем представления. Файл расположен в указанном каталоге. Этот метод вызовет CApplication::findLocalizedFile для поиска локализованного файла, если таковой имеется.

run() метод

public void run(string $actionID)
$actionID string ID действия
Исходный код: framework/web/CController.php#257 (показать)
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(), будут применены.

См. также

  • filters
  • createAction
  • runAction

runAction() метод

public void runAction(CAction $action)
$action CAction действие для выполнения
Исходный код: framework/web/CController.php#302 (показать)
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 список фильтров, которые необходимо применить к действию.
Исходный код: framework/web/CController.php#283 (показать)
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;
    }
}

Выполняет действие с указанными фильтрами. Цепочка фильтров будет создана на основе указанных фильтров, а затем действие будет выполнено.

См. также

  • filters
  • createAction
  • runAction

savePageStates() метод

protected void savePageStates(array $states, string &$output)
$states массив сохраняемые состояния.
$output строка вывод, который нужно изменить. Обратите внимание, что он передаётся по ссылке.
Исходный код: framework/web/CController.php#1226 (показать)
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 действие, которое выполняется в данный момент.
Исходный код: framework/web/CController.php#501 (показать)
public function setAction($value)
{
    
$this->_action=$value;
}

setPageState() метод

public void setPageState(string $name, mixed $value, mixed $defaultValue=NULL)
$name строка имя состояния.
$value смешанный тип значение состояния страницы.
$defaultValue смешанный тип Значение состояния по умолчанию для страницы. Если оно совпадает с заданным значением, состояние будет удалено из постоянного хранилища.
Исходный код: framework/web/CController.php#1181 (показать)
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.

См. также

  • getPageState
  • CHtml::statefulForm

setPageTitle() метод

public void setPageTitle(string $value)
$value строка заголовок страницы.
Исходный код: framework/web/CController.php#1012 (показать)
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API