Трейт RequestActionTrait
Предоставляет метод requestAction() для выполнения дочерних запросов
Прямые известные пользователи
Cake\Controller\Controller, Cake\View\ViewКосвенные известные пользователи
Cake\Controller\ErrorController, Cake\View\AjaxView, Cake\View\JsonView, Cake\View\SerializedView, Cake\View\XmlViewПодробное описание метода
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'.
© 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.Routing.RequestActionTrait.html