Класс Controller
Класс контроллера приложения для организации бизнес-логики. Предоставляет базовые функции, такие как рендеринг представлений внутри макетов, автоматическое доступность моделей, перенаправление, обратные вызовы и многое другое.
Контроллеры должны предоставлять ряд методов «действия». Это публичные методы контроллера, которые не наследуются от Controller. Каждое действие служит конечной точкой для выполнения определенного действия над ресурсом или коллекцией ресурсов. Например, добавление или редактирование нового объекта или вывод списка объектов.
Вы можете получить доступ к параметрам запроса, используя $this->request. Объект запроса содержит все POST, GET и FILES, которые были частью запроса.
После выполнения необходимого действия контроллеры отвечают за создание ответа. Обычно это происходит в форме сгенерированного View, или, возможно, перенаправления на другой URL. В любом случае $this->response позволяет вам управлять всеми аспектами ответа.
Контроллеры создаются Dispatcher на основе параметров запроса и маршрутизации. По умолчанию контроллеры и действия используют стандартные имена. Например, /posts/index отображается на PostsController::index(). Вы можете переопределить URL-адреса, используя Router::connect() или RouterBuilder::connect().
Обратные вызовы жизненного цикла
CakePHP запускает ряд обратных вызовов жизненного цикла во время каждого запроса. Реализовав метод, вы можете получить связанные события. Доступные обратные вызовы:
-
beforeFilter(Event $event)Вызывается перед каждым действием. Это хорошее место для выполнения общей логики, которая применима ко всем действиям. -
beforeRender(Event $event)Вызывается перед рендерингом представления. -
beforeRedirect(Event $event, $url, Response $response)Вызывается перед выполнением перенаправления. -
afterFilter(Event $event)Вызывается после завершения каждого действия и после рендеринга представления.
- Cake\Controller\Controller реализует Cake\Event\EventListenerInterface, Cake\Event\EventDispatcherInterface использует Cake\Event\EventDispatcherTrait, Cake\ORM\Locator\LocatorAwareTrait, Cake\Log\LogTrait, Cake\Utility\MergeVariablesTrait, Cake\Datasource\ModelAwareTrait, Cake\Routing\RequestActionTrait, Cake\View\ViewVarsTrait
Непосредственные известные подклассы
Cake\Controller\ErrorControllerСсылка: http://book.cakephp.org/3.0/en/controllers.html
Расположено в Controller/Controller.php
Подробное описание метода
__constructsource public
__construct( Cake\Network\Request $request null , Cake\Network\Response $response null , string|null $name null , Cake\Event\EventManager|null $eventManager null , Cake\Controller\ComponentRegistry|null $components null )
Конструктор.
Устанавливает ряд свойств на основе соглашений, если они пустые. Чтобы переопределить соглашения, используемые CakePHP, вы можете определить свойства в объявлении своего класса.
Параметры
-
Cake\Network\Request$requestнеобязательно null - Объект запроса для этого контроллера. Может быть null для тестирования, но ожидается, что функции, использующие параметры запроса, не будут работать.
-
Cake\Network\Response$responseнеобязательно null - Объект ответа для этого контроллера.
- string|null
$nameнеобязательно null - Переопределить имя, полезное при тестировании, когда используются моки.
-
Cake\Event\EventManager|null$eventManagerнеобязательно null - Менеджер событий. По умолчанию — новый экземпляр.
-
Cake\Controller\ComponentRegistry|null$componentsнеобязательно null - Регистр компонентов. По умолчанию — новый экземпляр.
__getsource public
__get( string $name )
Магический аксессор для автозагрузки модели.
Параметры
- string
$name - Имя свойства
Возвращает
boolean|objectЭкземпляр модели или false
__setsource public
__set( string $name , mixed $value )
Магический сеттер для удаленных свойств.
Параметры
- string
$name - Имя свойства.
- mixed
$value - Значение для установки.
_loadComponentssource protected
_loadComponents( )
Загружает определенные компоненты с помощью фабрики компонентов.
_mergeControllerVarssource protected
_mergeControllerVars( )
Объединение компонентов, переменных helpers из родительских классов.
_viewPathsource protected
_viewPath( )
Получение viewPath на основе имени контроллера и префикса запроса.
Возвращает
stringстрока
afterFiltersource public
afterFilter( Cake\Event\Event $event )
Вызывается после выполнения и рендеринга действия контроллера.
Параметры
-
Cake\Event\Event$event - Экземпляр события
Возвращает
Cake\Network\Response|null\Cake\Network\Response|null
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#request-life-cycle-callbacksbeforeFiltersource public
beforeFilter( Cake\Event\Event $event )
Вызывается перед действием контроллера. Вы можете использовать этот метод для настройки и настройки компонентов или выполнения логики, которая должна выполняться перед каждым действием контроллера.
Параметры
-
Cake\Event\Event$event - Экземпляр события
Возвращает
Cake\Network\Response|null\Cake\Network\Response|null
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#request-life-cycle-callbacksbeforeRedirectsource public
beforeRedirect( Cake\Event\Event $event , string|array $url , Cake\Network\Response $response )
Метод beforeRedirect вызывается, когда метод перенаправления контроллера вызывается, но до любых дальнейших действий.
Если событие остановлено, контроллер не будет продолжать перенаправлять запрос. Переменные $url и $status имеют то же значение, что и для метода контроллера. Вы можете установить результат события в экземпляр ответа или изменить место перенаправления, используя экземпляр ответа контроллера.
Параметры
-
Cake\Event\Event$event - Экземпляр события
- string|array
$url - Строка или массив, представляющие URL, указывающий на другую позицию в приложении или абсолютный URL
-
Cake\Network\Response$response - Объект ответа.
Возвращает
Cake\Network\Response|null\Cake\Network\Response|null
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#request-life-cycle-callbacksbeforeRendersource public
beforeRender( Cake\Event\Event $event )
Вызывается после выполнения действия контроллера, но перед рендерингом представления. Вы можете использовать этот метод для выполнения логики или установки переменных представления, которые необходимы при каждом запросе.
Параметры
-
Cake\Event\Event$event - Экземпляр события
Возвращает
Cake\Network\Response|null\Cake\Network\Response|null
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#request-life-cycle-callbackscomponentssource public
components( Cake\Controller\ComponentRegistry|null $components null )
Получить реестр компонентов для данного контроллера.
Если вызывается с первым параметром, он будет установлен в свойство контроллера $this->_components.
Параметры
-
Cake\Controller\ComponentRegistry|null$componentsнеобязательно null - Реестр компонентов.
Возвращаемое значение
Cake\Controller\ComponentRegistry\Cake\Controller\ComponentRegistry
implementedEventssource public
implementedEvents( )
Возвращает список всех событий, которые будут срабатывать в контроллере на протяжении его жизненного цикла. Вы можете переопределить эту функцию, чтобы добавить свои обработчики событий.
Возвращаемое значение
arrayarray
Реализация
Cake\Event\EventListenerInterface::implementedEvents() initializesource public
initialize( )
Метод инициализации.
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.
invokeActionsource public
invokeAction( )
Выполняет действие контроллера. Проверяет, что действие существует и не является закрытым.
Возвращаемое значение
mixedРезультат ответа.
Исключения
LogicExceptionКогда запрос не установлен.
Cake\Controller\Exception\MissingActionExceptionКогда действия не определены или недоступны.
isActionsource public
isAction( string $action )
Метод проверки доступности действия из URL.
Переопределите этот метод, чтобы изменить доступные методы контроллера. По умолчанию доступ запрещён для всех методов Cake\Controller\Controller, и разрешён для всех публичных методов всех подклассов этого класса.
Параметры
- string
$action - Действие для проверки.
Возвращаемое значение
booleanДоступно ли действие из URL.
loadComponentsource public
loadComponent( string $name , array $config [] )
Добавить компонент в реестр контроллера.
Этот метод также установит компонент в свойство. Например:
$this->loadComponent('Acl.Acl');
Приведёт к установке свойства Toolbar.
Параметры
- string
$name - Имя компонента для загрузки.
- array
$configнеобязательно [] - Настройки компонента.
Возвращаемое значение
Cake\Controller\Component\Cake\Controller\Component
paginatesource public
paginate( Cake\ORM\Table|string|Cake\ORM\Query|null $object null )
Обработка постраничной навигации записей в объектах таблиц.
Загрузит связанный объект таблицы и осуществит постраничную навигацию запроса с использованием данных запроса и настроек, определённых в $this->paginate.
Этот метод также сделает PaginatorHelper доступным в представлении.
Параметры
-
Cake\ORM\Table|string|Cake\ORM\Query|null$objectнеобязательно null - Таблица для постраничной навигации (например: экземпляр таблицы, 'НазваниеТаблицы' или объект запроса)
Возвращаемое значение
Cake\ORM\ResultSetРезультаты запроса
Исключения
RuntimeExceptionПри отсутствии подходящего объекта таблицы.
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#Controller::paginateredirectsource public
redirect( string|array $url , integer $status 302 )
Перенаправляет на указанный $url, после отключения $this->autoRender. Выполнение скрипта прекращается после перенаправления.
Параметры
- string|array
$url - Строковый или массивно-основанный URL, указывающий на другое местоположение в приложении или абсолютный URL
- integer
$statusнеобязательно 302 - Код HTTP-статуса (например: 301)
Возвращаемое значение
Cake\Network\Response|null\Cake\Network\Response|null
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#Controller::redirectreferersource public
referer( string|null $default null , boolean $local false )
Возвращает URL предыдущего запроса для текущего запроса.
Параметры
- string|null
$defaultнеобязательно null - URL по умолчанию, если HTTP_REFERER не может быть прочитан из заголовков
- boolean
$localнеобязательно false - Если true, ограничивает ссылки предыдущих запросов до локального сервера
Возвращаемое значение
stringСсылка предыдущего запроса
rendersource public
render( string $view null , string $layout null )
Создаёт соответствующий класс представления, передаёт ему данные и использует его для рендеринга выходных данных представления.
Параметры
- string
$viewнеобязательно null - Представление для рендеринга
- string
$layoutнеобязательно null - Макет для использования
Возвращаемое значение
Cake\Network\ResponseОбъект ответа, содержащий отрендеренное представление.
Ссылка
http://book.cakephp.org/3.0/ru/controllers.html#rendering-a-viewsetActionsource public
setAction( string $action )
Внутренне перенаправляет одно действие на другое. Не выполняет дополнительный HTTP-запрос, в отличие от Controller::redirect()
Примеры:
setAction('another_action'); setAction('action_with_parameters', $parameter1);
Параметры
- string
$action - Новое действие, на которое происходит 'перенаправление'. Любые другие параметры, переданные в этот метод, будут переданы в качестве параметров новому действию.
Возвращаемое значение
mixedВозвращает значение, возвращённое вызванным действием
setRequestsource public
setRequest( Cake\Network\Request $request )
Устанавливает объекты запроса и настраивает ряд свойств контроллера на основе содержимого запроса. Контроллер действует как прокси для определённых переменных представления, которые также должны быть обновлены здесь. Свойства, которые устанавливаются:
- $this->request - В $request параметр
- $this->plugin - В $request->params['plugin']
- $this->passedArgs - Также как $request->params['pass]
- View::$plugin - $this->plugin
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
shutdownProcesssource public
shutdownProcess( )
Выполняет различные процессы завершения работы для этого контроллера. Вызывает методы компонентов и контроллера в правильном порядке.
- вызывает метод компонента
shutdowncallback. - вызывает метод контроллера
afterFiltermethod.
Возвращаемое значение
Cake\Network\Response|null\Cake\Network\Response|null
startupProcesssource public
startupProcess( )
Выполняет процесс запуска для этого контроллера. Вызывает методы компонентов и контроллера в правильном порядке.
- Инициализирует компоненты, вызывая их
initializecallback - Вызывает метод контроллера
beforeFilter. - вызывает методы компонентов
startup.
Возвращаемое значение
Cake\Network\Response|null\Cake\Network\Response|null
Методы, используемые из Cake\Event\EventDispatcherTrait
dispatchEventsource public
dispatchEvent( string $name , array|null $data null , object|null $subject null )
Обёртка для создания и отправки событий.
Возвращает обработанное событие.
Параметры
- строка
$name - Имя события.
- массив|null
$dataнеобязательно null - Любое значение, которое вы хотите передать вместе с этим событием, чтобы его могли прочитать слушатели.
- объект|null
$subjectнеобязательно null - Объект, к которому относится это событие ($this по умолчанию).
Возвращает
Cake\Event\Event\Cake\Event\Event
Реализация
Cake\Event\EventDispatcherInterface::dispatchEvent() eventManagersource public
eventManager( Cake\Event\EventManager $eventManager null )
Возвращает экземпляр менеджера событий Cake\Event\EventManager для данного объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий объекта, или создавать собственные события и запускать их по своему усмотрению.
Параметры
-
Cake\Event\EventManager$eventManagerнеобязательно null - установленный eventManager
Возвращает
Cake\Event\EventManager\Cake\Event\EventManager
Реализация
Cake\Event\EventDispatcherInterface::eventManager() Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait
tableLocatorsource public
tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator null )
Устанавливает локатор таблиц. Если параметры не переданы, он вернёт текущий используемый локатор.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocatorнеобязательно null - Экземпляр LocatorInterface.
Возвращает
Cake\ORM\Locator\LocatorInterface\Cake\ORM\Locator\LocatorInterface
Методы, используемые из Cake\Log\LogTrait
logsource public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. Для получения более подробной информации о записи в журналы см. Log::write().
Параметры
- смешанное
$msg - Сообщение журнала.
- целое число|строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка|массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
booleanРезультат записи в журнал.
Методы, используемые из Cake\Utility\MergeVariablesTrait
_mergePropertysource protected
_mergeProperty( string $property , array $parentClasses , array $options )
Объединение одного свойства со значениями, объявленными во всех родительских классах.
Параметры
- строка
$property - Имя объединяемого свойства.
- массив
$parentClasses - Массив классов, которые вы хотите объединить.
- массив
$options - Параметры для объединения свойства, см. _mergeVars()
_mergePropertyDatasource protected
_mergePropertyData( array $current , array $parent , boolean $isAssoc )
Объединяет каждый из ключей в свойстве.
Параметры
- массив
$current - Текущее объединённое значение.
- массив
$parent - Значение родительского класса.
- boolean
$isAssoc - Флаг, указывающий, должно ли объединение производиться в ассоциативном режиме.
Возвращает
mixedОбновлённое значение.
_mergeVarssource protected
_mergeVars( array $properties , array $options [] )
Объединяет список $properties со всеми родительскими классами текущего класса.
Параметры:
-
associative- Список свойств, которые должны обрабатываться как ассоциативные массивы. Свойства в этом списке будут переданы через Hash::normalize() перед объединением.
Параметры
- массив
$properties - Массив свойств и стратегии их объединения.
- массив
$optionsнеобязательно [] - Параметры, используемые при объединении свойств.
Методы, используемые из Cake\Datasource\ModelAwareTrait
_setModelClasssource protected
_setModelClass( string $name )
Устанавливает свойства modelClass и modelKey на основе соглашений.
Если свойства уже установлены, они не будут перезаписаны.
Параметры
- строка
$name - Имя класса.
loadModelsource public
loadModel( string|null $modelClass null , string|null $modelType null )
Загружает и создаёт объекты репозитория, необходимые этому объекту.
Обычно используется для загрузки объектов таблиц ORM по мере необходимости. Также может использоваться для загрузки других типов объектов репозитория, которые использует ваше приложение.
Если поставщик репозитория не возвращает объект, будет выброшено исключение MissingModelException.
Параметры
- строка|null
$modelClassнеобязательно null - Имя класса модели для загрузки. По умолчанию $this->modelClass
- строка|null
$modelTypeнеобязательно null - Тип репозитория для загрузки. По умолчанию значение modelType().
Возвращает
objectСозданный экземпляр модели.
Выбрасывает
Cake\Datasource\Exception\MissingModelExceptionЕсли класс модели не найден.
InvalidArgumentExceptionПри использовании типа, который не зарегистрирован.
UnexpectedValueExceptionЕсли тип модели не определён.
modelFactorysource public
modelFactory( string $type , callable $factory )
Регистрирует вызываемый объект для генерации репозиториев заданного типа.
Параметры
- строка
$type - Имя типа репозитория, для которого предназначена фабричная функция.
- вызываемый объект
$factory - Фабричная функция, используемая для создания экземпляров.
modelTypesource public
modelType( string|null $modelType null )
Устанавливает или получает тип модели, который будет использоваться этим классом.
Параметры
- строка|null
$modelTypeнеобязательно null - Тип модели или null для получения текущего
Возвращает
string|$this$this
Методы, используемые из Cake\Routing\RequestActionTrait
requestActionsource public
requestAction( string|array $url , array $extra [] )
Вызывает метод контроллера из любого места. Может использоваться для связи контроллеров друг с другом или для подключения плагинов к основному приложению. requestAction может возвращать отрисованные представления или получать возвращаемое значение из действий контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строку URL. Вы должны использовать форматы URL, совместимые с Router::reverse().
Примеры
Базовый пример получения возвращаемого значения действия контроллера:
$variables = $this->requestAction('/articles/popular');
Базовый пример использования request action для получения отрисованной страницы без макета.
$viewHtml = $this->requestAction('/articles/popular', ['return']);
Вы также можете передать URL в виде массива:
$vars = $this->requestAction(['controller' => 'articles', 'action' => 'popular']);
Передача других данных запроса
Вы можете передать данные POST, GET, COOKIE и другие данные в запрос, используя соответствующие ключи. Куки могут быть переданы с помощью ключа cookies. Параметры GET могут быть установлены с помощью query, а данные POST могут быть отправлены с помощью ключа post.
$vars = $this->requestAction('/articles/popular', [ 'query' => ['page' => 1], 'cookies' => ['remember_me' => 1], ]);
Отправка значений среды или заголовков
По умолчанию действия, вызываемые этим методом, будут использовать глобальные значения $_SERVER и $_ENV. Если вы хотите переопределить эти значения для действия запроса, вы можете указать значения:
$vars = $this->requestAction('/articles/popular', [ 'environment' => ['CONTENT_TYPE' => 'application/json'] ]);
Передача сессии
По умолчанию действия, вызываемые этим методом, будут использовать стандартный объект сессии. Если вам нужно использовать определенный экземпляр сессии, вы должны указать его.
$vars = $this->requestAction('/articles/popular', [ 'session' => new Session($someSessionConfig) ]);
Параметры
- строка|массив
$url - URL в виде строки или массива. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные аргументы в параметре $url.
- массив
$extraнеобязательно [] - Если массив содержит ключ "return", он устанавливает autoRender в true. Также может использоваться для отправки данных GET/POST и переданных аргументов.
Возвращаемое значение
mixedБулево значение true или false при успехе/неудаче или содержимое отрисованного действия, если в $extra установлен ключ 'return'.
Методы, используемые из Cake\View\ViewVarsTrait
createViewsource public
createView( string|null $viewClass null )
Создает экземпляр класса представления на основе текущей конфигурации.
Параметры
- строка|null
$viewClassнеобязательно null - Необязательное имя пространственно-разделенного класса представления для создания экземпляра.
Возвращаемое значение
Cake\View\View\Cake\View\View
Исключения
Cake\View\Exception\MissingViewExceptionЕсли класс представления не найден.
setsource public
set( string|array $name , string|array|null|boolean $value null )
Сохраняет переменную или ассоциативный массив переменных для использования внутри шаблона.
Параметры
- строка|массив
$name - Строка или массив данных.
- строка|массив|null|boolean
$valueнеобязательно null - Значение, если $name является строкой (которая затем работает как ключ). Не используется, если $name является ассоциативным массивом, в противном случае служит значениями для ключей $name.
Возвращаемое значение
mixed$this
viewBuildersource public
viewBuilder( )
Получение используемого билдера представлений.
Возвращаемое значение
Cake\View\ViewBuilder\Cake\View\ViewBuilder
viewOptionssource public
viewOptions( string|array|null $options null , boolean $merge true )
Получение/установка допустимых параметров представления в свойстве _validViewOptions объекта. Свойство создается как пустой массив, если оно не задано. Если вызывается без параметров, оно вернет текущий список допустимых параметров представления. См. createView().
Параметры
- строка|массив|null
$optionsнеобязательно null - Строка или массив строк, которые нужно добавить к _validViewOptions.
- boolean
$mergeнеобязательно true - Объединять или переопределять существующие допустимые параметры View. По умолчанию
true.
Возвращаемое значение
arrayОбновленные параметры представления в виде массива.
Краткое описание свойств
Свойства, используемые из Cake\Event\EventDispatcherTrait
$_eventClasssource
protected string
Имя по умолчанию класса для новых объектов событий.
'\Cake\Event\Event' $_eventManagersource
protected Cake\Event\EventManager
Экземпляр Cake\Event\EventManager, который используется этим объектом для отправки внутренних событий.
null Свойства, используемые из Cake\ORM\Locator\LocatorAwareTrait
Свойства, используемые из Cake\Datasource\ModelAwareTrait
$modelClasssource
public string
Основное имя класса модели этого объекта. Должно быть в множественном числе. CakePHP не будет склонять имя.
Пример: Для объекта с именем 'Comments', modelClass будет 'Comments'. Классы плагинов должны использовать имена в формате Plugin.Comments для правильной загрузки моделей из соответствующего плагина.
Свойства, используемые из Cake\View\ViewVarsTrait
$viewClasssource
public string
Имя класса представления по умолчанию.
Устаревшее
3.1.0 Используйте$this->viewBuilder()->className() вместо этого.null Краткое описание магических свойств
$Authsource
$Cookiesource
$Csrfsource
$Flashsource
$Paginatorsource
$RequestHandlersource
$Securitysource
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Controller.Controller.html