authManager: управляет контролем доступа на основе ролей (RBAC).
clientScript: управляет клиентскими скриптами (javascripts и CSS).
widgetFactory: создает виджеты и поддерживает оформление виджетов.
Пользовательские запросы разрешаются как пары контроллер-действие и дополнительные параметры. CWebApplication создает экземпляр запрошенного контроллера и позволяет ему обработать фактический пользовательский запрос. Если пользователь не указывает идентификатор контроллера, предполагается, что запрашивается defaultController (по умолчанию 'site').
Файлы класса контроллера должны находиться в каталоге controllerPath (по умолчанию 'protected/controllers'). Имя файла и имя класса должны совпадать с идентификатором контроллера, первая буква должна быть заглавной, и добавляться суффикс 'Controller'. Например, контроллер 'article' определяется классом 'ArticleController', который находится в файле 'protected/controllers/ArticleController.php'.
конфигурация, определяющая контроллер, который должен обрабатывать все пользовательские запросы. Это в основном используется, когда приложение находится в режиме технического обслуживания, и мы должны использовать контроллер для обработки всех входящих запросов. Конфигурация определяет маршрут контроллера (первый элемент) и параметры GET (остальные пары имя-значение). Например,
отображение от идентификатора контроллера до конфигураций контроллера. Каждая пара имя-значение определяет конфигурацию для одного контроллера. Конфигурация контроллера может быть строкой или массивом. Если строка, она должна быть именем класса или псевдонимом пути к классу контроллера. Если массив, он должен содержать элемент 'class', который определяет имя класса контроллера или псевдоним пути к классу. Остальные пары имя-значение в массиве используются для инициализации соответствующих свойств контроллера. Например,
При обработке входящего запроса карта контроллеров будет сначала проверена, чтобы определить, может ли запрос быть обработан одним из контроллеров в карте. Если нет, контроллер будет искаться в стандартном пути к контроллерам.
controllerNamespace свойство (доступно начиная с v1.1.11)
public string $controllerNamespace;
Пространство имён, которое должно быть использовано при загрузке контроллеров. По умолчанию используется глобальное пространство имён.
Возвращает рендерер представления. Если этот компонент зарегистрирован и включён, логика рендеринга представления по умолчанию, определённая в CBaseController, будет заменена этим рендерером.
widgetFactory свойство только для чтения (доступно начиная с v1.1)
public function afterControllerAction($controller,$action) { }
Послефильтр для действий контроллеров. Этот метод вызывается после выполнения текущего действия запрошенного контроллера и всех его фильтров. Вы можете переопределить этот метод, чтобы выполнить логику после всех действий контроллера.
beforeControllerAction() метод
public boolean beforeControllerAction(CController $controller, CAction $action)
public function beforeControllerAction($controller,$action) { return true; }
Предфильтр для действий контроллеров. Этот метод вызывается перед выполнением текущего действия запрошенного контроллера и всех его фильтров. Вы можете переопределить этот метод, чтобы выполнить логику перед всеми действиями контроллера.
createController() метод
public array createController(string $route, CWebModule $owner=NULL)
Создаёт экземпляр контроллера на основе маршрута. Маршрут должен содержать идентификатор контроллера и идентификатор действия. Он также может содержать дополнительные переменные GET. Все они должны быть объединены друг с другом через слэши.
Этот метод попытается создать контроллер в следующей последовательности:
Если первый сегмент найден в controllerMap, соответствующая конфигурация контроллера будет использована для создания контроллера;
Если первый сегмент оказывается идентификатором модуля, соответствующий модуль будет использован для создания контроллера;
В противном случае он будет искать под controllerPath для создания соответствующего контроллера. Например, если маршрут равен "admin/user/create", то контроллер будет создан с использованием файла класса "protected/controllers/admin/UserController.php".
public function getViewRenderer() { return $this->getComponent('viewRenderer'); }
Возвращает рендерер представлений. Если этот компонент зарегистрирован и включён, стандартная логика рендеринга представлений, определённая в CBaseController, будет заменена этим рендерером.
getWidgetFactory() метод (доступен начиная с v1.1)
public function runController($route) { if(($ca=$this->createController($route))!==null) { list($controller,$actionID)=$ca; $oldController=$this->_controller; $this->_controller=$controller; $controller->init(); $controller->run($actionID); $this->_controller=$oldController; } else throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".', array('{route}'=>$route===''?$this->defaultController:$route))); }
Создаёт контроллер и выполняет указанное действие.
public function setControllerPath($value) { if(($this->_controllerPath=realpath($value))===false || !is_dir($this->_controllerPath)) throw new CException(Yii::t('yii','The controller path "{path}" is not a valid directory.', array('{path}'=>$value))); }
public function setLayoutPath($path) { if(($this->_layoutPath=realpath($path))===false || !is_dir($this->_layoutPath)) throw new CException(Yii::t('yii','The layout path "{path}" is not a valid directory.', array('{path}'=>$path))); }
public function setSystemViewPath($path) { if(($this->_systemViewPath=realpath($path))===false || !is_dir($this->_systemViewPath)) throw new CException(Yii::t('yii','The system view path "{path}" is not a valid directory.', array('{path}'=>$path))); }
public function setViewPath($path) { if(($this->_viewPath=realpath($path))===false || !is_dir($this->_viewPath)) throw new CException(Yii::t('yii','The view path "{path}" is not a valid directory.', array('{path}'=>$path))); }