Класс Router
Разбирает URL запроса на контроллер, действие и параметры. Использует подключенные маршруты для сопоставления входящей строки URL с параметрами, которые позволят обработать запрос. Также обрабатывает преобразование списков параметров в строки URL, используя подключенные маршруты. Маршрутизация позволяет отделить способ взаимодействия мира с вашим приложением (URL) от реализации (контроллеры и действия).
Подключение маршрутов
Подключение маршрутов выполняется с помощью Router::connect(). При разборе входящих запросов или обратном сопоставлении параметров маршруты перечисляются в порядке их подключения. Для получения дополнительной информации о маршрутах и способах их подключения см. Router::connect().
Краткое описание констант
-
string'index|show|add|create|edit|update|remove|del|delete|view|item' -
string'0[1-9]|[12][0-9]|3[01]' -
string'[0-9]+' -
string'0[1-9]|1[012]' -
string'[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}' -
string'[12][0-9]{3}'
Краткое описание свойств
- Коллекция маршрутов, к которой будут добавлены маршруты.
Cake\Routing\RouteCollection - Определенные по умолчанию расширения с помощью Router::extensions()
array - Класс маршрута по умолчанию.
boolean -
stringСодержит базовую строку, которая будет применена ко всем сгенерированным URL. Например
https://example.com -
arrayНачальное состояние заполняется в первый раз при вызове reload(), который находится в конце этого файла. Это уловка, так как get_class_vars() возвращает значение статических переменных, даже если они изменились.
- Имена выражений
array - Хэш данных контекста запроса.
array -
arrayСохраняет стек объектов запроса для текущего запроса. Он будет содержать более одного объекта запроса, когда используется requestAction.
-
arrayСтек фильтров URL для применения к URL маршрутизации перед передачей параметров в коллекцию маршрутов.
- Были загружены маршруты
boolean
Краткое описание методов
- Применяет все подключенные фильтры URL к URL.
- Загрузка конфигурации маршрутов
- Хранит контекст запроса для данного запроса.
- Добавляет фильтр URL в Router.
- Подключает новый маршрут в маршрутизатор.
- Получить или установить класс маршрута по умолчанию.
- Получить или установить допустимые расширения для всех маршрутов, подключенных позже.
-
Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полных URL для этого приложения. Если параметры не переданы, возвращается текущее значение.
- Получает именованные шаблоны маршрутов для использования в config/routes.php
- Получить текущий объект запроса или первый.
- Генерирует REST-маршруты ресурсов для заданного(ых) контроллера(ов).
- Нормализует URL для целей сравнения.
- Разбирает заданную строку URL. Возвращает параметры 'routing' для этого URL.
- Обеспечивает обратную совместимость с именованными параметрами входящих URL.
- Добавляет маршруты плагина.
- Извлекает запрос из стека запросов. Используется при выполнении requestAction
- Создание маршрутов с префиксом.
-
Добавляет запрос в стек запросов. Добавление запроса устанавливает контекст запроса, используемый при генерации URL.
- Подключает новый перенаправляющий маршрут в маршрутизатор.
-
Перезагружает параметры маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключенные маршруты.
- Преобразует массив параметров в строку.
- Получить области маршрутов и подключенные к ним маршруты.
- Создание области маршрутизации.
-
Получает информацию о параметрах и пути из диспетчера, устанавливает эти параметры в качестве текущих параметров запроса, которые объединяются с массивами URL, созданными позже в запросе.
- Находит URL для указанного действия.
Подробное описание методов
_applyUrlFilters()source protected static
_applyUrlFilters( array $url )
Применяет все подключенные фильтры URL к URL.
Параметры
- массив
$url - Массив URL, который изменяется.
Возвращает
массивИзменённый URL.
См. также
\Cake\Routing\Router::url()\Cake\Routing\Router::addUrlFilter()
_setContext()source protected static
_setContext( Cake\Network\Request $request )
Сохраняет контекст запроса для данного запроса.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
addUrlFilter()source public static
addUrlFilter( callable $function )
Добавляет фильтр URL в Router.
Функции фильтрации URL применяются к каждому массиву $url, предоставленному Router::url(), перед отправкой URL в набор маршрутов.
Функции обратного вызова должны ожидать следующие параметры:
-
$paramsПараметры URL, которые обрабатываются. -
$requestТекущий запрос.
Функция фильтрации URL всегда должна возвращать параметры, даже если они не изменены.
Использование
Фильтры URL позволяют легко реализовать функции, такие как сохранение параметров.
Router::addUrlFilter(function ($params, $request) {
if (isset($request->params['lang']) && !isset($params['lang'])) {
$params['lang'] = $request->params['lang'];
}
return $params;
}); Параметры
- вызываемый
$function - Функция, которую нужно добавить
connect()source public static
connect( string $route , array $defaults [] , array $options [] )
Подключает новый маршрут в маршрутизатор.
Прокси-сервер совместимости для \Cake\Routing\RouteBuilder::connect() в / области.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$defaultsнеобязательно [] Массив, описывающий параметры маршрута по умолчанию. Эти параметры будут использоваться по умолчанию и могут предоставить параметры маршрутизации, которые не являются динамическими. См. выше.
- массив
$optionsнеобязательно [] Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как: какие параметры маршрутизации должны быть сдвинуты в переданные аргументы, предоставление шаблонов для параметров маршрутизации и предоставление имени пользовательского класса маршрутизации.
Выбрасывает
Cake\Core\Exception\ExceptionСм. также
\Cake\Routing\RouteBuilder::connect()\Cake\Routing\Router::scope()
defaultRouteClass()source public static
defaultRouteClass( string|null $routeClass null )
Получить или установить класс маршрута по умолчанию.
Параметры
- строка|null
$routeClassнеобязательно null - Имя класса.
Возвращает
строка|nullextensions()source public static
extensions( array|string|null $extensions null , boolean $merge true )
Получить или установить допустимые расширения для всех позже подключенных маршрутов.
Инструктирует маршрутизатор извлекать расширения файлов из URL. Например, http://example.com/posts.rss даст расширение файла "rss". Само расширение файла доступно в контроллере как $this->request->params['_ext'], и используется компонентом RequestHandler для автоматического переключения на альтернативные макеты и шаблоны, а также для загрузки помощников, соответствующих данному содержимому, например, RssHelper. Переключение макетов и помощников требует, чтобы выбранное расширение имело определенный тип MIME в Cake\Network\Response.
В этот метод можно передать строку или массив допустимых расширений. Если метод вызывается без параметров, он вернет текущий список установленных расширений.
Параметры
- массив|строка|null
$extensionsнеобязательно null - Список расширений, которые нужно добавить.
- логическое значение
$mergeнеобязательно true Флаг, указывающий на слияние или полную перезапись существующих расширений. По умолчанию
true.
Возвращает
массивМассив расширений, которые маршрутизатор настроен для анализа.
fullBaseUrl()source public static
fullBaseUrl( string|null $base null )
Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полных URL-адресов для этого приложения. Если параметры не передаются, возвращается текущее значение конфигурации.
Примечание:
Если вы изменяете значение конфигурации App.fullBaseUrl во время выполнения и ожидаете, что маршрутизатор будет генерировать ссылки с использованием нового значения, необходимо снова вызвать этот метод, передавая это значение.
Параметры
- строка|null
$baseнеобязательно null Префикс для URL-адресов, генерируемых с доменом. Например:
http://example.com
Возвращает
строкаgetNamedExpressions()source public static
getNamedExpressions( )
Получает именованные шаблоны маршрутов для использования в config/routes.php
Возвращает
массивЭлементы именованного маршрута
См. также
\Cake\Routing\Router::$_namedExpressionsgetRequest()source public static
getRequest( boolean $current false )
Получить текущий объект запроса или первый.
Параметры
- логическое значение
$currentнеобязательно false - True для получения текущего запроса, или false для получения первого.
Возвращает
объект запроса|nullmapResources()source public static
mapResources( string|array $controller , array $options [] )
Генерирует REST маршруты ресурсов для указанного(ых) контроллера(ов).
Прокси-метод совместимости для \Cake\Routing\RouteBuilder::resources(). Дополнительно, совместимость по префиксам и плагинам и префиксам обрабатывается этим методом.
Быстрый способ сгенерировать маршруты по умолчанию для набора REST ресурсов (контроллеров).
Использование
Подключение маршрутов ресурсов для контроллера приложения:
Router::mapResources('Posts'); Подключение маршрутов ресурсов для контроллера Comment в плагине Comments:
Router::mapResources('Comments.Comment'); Плагины создают маршруты ресурсов с нижним регистром через подчеркивание. Пример /comments/comment
Подключение маршрутов ресурсов для контроллера Posts в префиксе Admin:
Router::mapResources('Posts', ['prefix' => 'admin']); Префиксы создадут маршруты ресурсов с нижним регистром через подчеркивание. Пример /admin/posts
Параметры:
- 'id' - Фрагмент регулярного выражения, используемый при сопоставлении идентификаторов. По умолчанию соответствует целочисленным значениям и UUID.
- 'prefix' - Префикс маршрутизации для использования в сгенерированных маршрутах. По умолчанию ''. Использование этого параметра создаст префиксные маршруты, аналогично использованию Routing.prefixes.
- 'only' - Подключить только указанный список действий.
- 'actions' - Переопределить имена методов, используемых для подключения действий.
- 'map' - Дополнительные маршруты ресурсов, которые должны быть подключены. Если вы определяете 'only' и 'map', убедитесь, что ваши отображаемые методы также находятся в списке 'only'.
Параметры
- строка|массив
$controller - Имя контроллера или массив имён контроллеров (например, "Posts" или "ListItems")
- массив
$optionsнеобязательно [] - Параметры для использования при генерации REST маршрутов
См. также
\Cake\Routing\RouteBuilder::resources()normalize()source public static
normalize( array|string $url '/' )
Нормализует URL в целях сравнения.
Убирает базовый путь и заменяет все двойные '/' на одиночные. Он не унифицирует регистр и использование подчеркиваний в вводимом значении.
Параметры
- массив|строка
$urlнеобязательно '/' - URL для нормализации. Может быть массивом или строкой URL.
Возвращает
строкаНормализованный URL
parse()source public static
parse( string $url )
Парсит заданную строку URL. Возвращает параметры «маршрутизации» для этого URL.
Параметры
- строка
$url - URL для парсинга
Возвращает
массивРазбор элементов из URL
Вызывает исключение
Cake\Routing\Exception\MissingRouteExceptionКогда маршрут не может быть обработан
parseNamedParams()source public static
parseNamedParams( Cake\Network\Request $request , array $options [] )
Обеспечивает обратную совместимость с именованными параметрами в входящих URL.
Проверяет переданные параметры на наличие элементов, содержащих $options['separator']. Эти параметры разбиваются и парсятся так, как если бы они были именованными параметрами старого стиля.
Разбор параметров будет перемещен из params['pass'] в params['named'].
Параметры
-
separatorСтрока, используемая в качестве разделителя. По умолчанию:.
Параметры
-
Cake\Network\Request$request - Объект запроса, который нужно изменить.
- массив
$optionsнеобязательно [] - Массив параметров.
Возвращает
Cake\Network\RequestИзменённый запрос
plugin()source public static
plugin( string $name , array|callable $options [] , callable|null $callback null )
Добавить маршруты плагина.
Этот метод создаёт область видимости маршрута, которая включает в себя соответствующую информацию о плагине.
Имя плагина будет склонено к нижнему регистру с подчеркиванием для создания пути маршрутизации. Если вам нужен пользовательский путь, используйте параметр path.
Маршруты, связанные в области видимости, будут иметь соответствующий префикс пути, и у них будет задан соответствующий ключ маршрутизации плагина.
Параметры
- строка
$name - Имя плагина для создания маршрутов
- массив|вызов
$optionsнеобязательно [] - Либо параметры, либо обратный вызов
- вызов|null
$callbackнеобязательно null Обратный вызов, который вызывает создание маршрутов плагина. Требуется только когда $options определены
popRequest()source public static
popRequest( )
Извлекает запрос из стека запросов. Используется при выполнении requestAction
Возвращает
Cake\Network\RequestЗапрос, удалённый из стека.
См. также
\Cake\Routing\Router::pushRequest()\Cake\Routing\RequestActionTrait::requestAction()
prefix()source public static
prefix( string $name , array|callable $params [] , callable|null $callback null )
Создать префиксные маршруты.
Этот метод создаёт область видимости маршрута, которая включает в себя соответствующую информацию о префиксе.
Параметр пути используется для генерации имени параметра маршрутизации. Например, путь admin приведет к применению 'prefix' => 'admin' ко всем подключенным маршрутам.
Вы можете повторно открыть префикс столько раз, сколько нужно, а также вложенные префиксы. Вложенные префиксы приведут к значениям префиксов, таким как admin/api , что соответствует пространству имён Controller\Admin\Api\.
Параметры
- строка
$name - Имя префикса для использования.
- массив|вызов
$paramsнеобязательно [] Массив значений по умолчанию для маршрутизации, которые нужно добавить к каждому подключенному маршруту. Если у вас нет параметров, этот аргумент может быть обратным вызовом.
- вызов|null
$callbackнеобязательно null - Обратный вызов, который вызывает построение префиксных маршрутов.
pushRequest()source public static
pushRequest( Cake\Network\Request $request )
Положить запрос в стек запросов. Добавление запроса задаёт контекст запроса, используемый при генерации URL.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
redirect()source public static
redirect( string $route , array $url , array $options [] )
Подключает новый перенаправляющий маршрут в маршрутизатор.
Прокси-метод для \Cake\Routing\RouteBuilder::redirect() в области видимости /.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$url - URL для перенаправления. Может быть строкой или URL в формате Cake-массива.
- массив
$optionsнеобязательно [] Массив, соответствующий именованным элементам в маршруте, регулярным выражениям, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрута, которые следует переместить в переданные аргументы, а также шаблоны для параметров маршрутизации.
См. также
\Cake\Routing\RouteBuilder::redirect()reload()source public static
reload( )
Перезагружает настройки маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключенные маршруты.
reverse()source public static
reverse( Cake\Network\Request|array $params , boolean $full false )
Обращает массив параметров, полученных при разборе, в строку.
Работает аналогично Router::url(), но так как анализируемые URL содержат дополнительные ключи «pass» и «url.url», эти ключи необходимо специально обработать для преобразования массива параметров в строку URL.
Этот метод удалит параметры «autoRender», «bare», «requested» и «return», так как они используются внутренними компонентами CakePHP и обычно не должны быть частью выходного URL.
Параметры
-
Cake\Network\Request|массив$params Массив params или объект Cake\Network\Request, который требуется обратить.
- boolean
$fullнеобязательно false Установить в true, чтобы включить весь URL, включая протокол, при обращении URL.
Возвращает
строкаРезультат обращения массива в строку
routes()source public static
routes( )
Получить области видимости маршрутов и подключенные к ним маршруты.
Возвращает
массивscope()source public static
scope( string $path , array|callable $params [] , callable|null $callback null )
Создать область видимости маршрутизации.
Области видимости маршрутизации позволяют сохранять ваши маршруты DRY и избегать повторения общих префиксов путей и/или наборов параметров.
Области видимости будут индексироваться по пути для более быстрого разбора маршрутов. Если вы повторно открываете или используете область видимости, подключенные маршруты будут объединены с существующими.
Пример
Router::scope('/blog', ['plugin' => 'Blog'], function ($routes) {
$routes->connect('/', ['controller' => 'Articles']);
}); Вышеуказанное приведет к созданию маршрута /blog/ с установленными параметрами плагина и контроллера по умолчанию.
Вы можете использовать Router::plugin() и Router::prefix() в качестве сокращений для создания определённых типов областей видимости.
Области видимости маршрутизации будут унаследовать глобально заданные расширения, настроенные с помощью Router::extensions(). Вы также можете установить допустимые расширения с помощью $routes->extensions() в своём замыкании.
Параметры
- строка
$path Префикс пути для области видимости. Этот путь будет добавлен в префикс ко всем маршрутам, подключённым в данной области видимости.
- массив|вызов
$paramsнеобязательно [] Массив значений по умолчанию для маршрутизации, которые нужно добавить к каждому подключенному маршруту. Если у вас нет параметров, этот аргумент может быть обратным вызовом.
- вызов|null
$callbackнеобязательно null - Обратный вызов, вызываемый с областью видимости маршрутов.
Вызывает исключение
InvalidArgumentExceptionЕсли предоставлен недопустимый обратный вызов.
setRequestInfo()source public static
setRequestInfo( Cake\Network\Request|array $request )
Принимает информацию о параметрах и пути от диспетчера, устанавливает эти параметры как текущие параметры запроса, которые объединяются с массивами URL, создаваемыми позднее в запросе.
Вложенные запросы создадут стек запросов. Вы можете удалить запросы с помощью Router::popRequest(). Это делается автоматически при использовании Object::requestAction().
Принимает объект Cake\Network\Request или массив массивов. Поддержка приёма массивов может быть удалена в будущем.
Параметры
-
Cake\Network\Request|массив$request - Информация о параметрах и пути или объект Cake\Network\Request.
url()source public static
url( string|array|null $url null , boolean $full false )
Находит URL для указанного действия.
Возвращает URL, указывающий на комбинацию контроллера и действия.
Использование
-
Router::url('/posts/edit/1');Возвращает строку с добавленным базовым каталогом. Это использование не использует обратный маршрутизацию. -
Router::url(['controller' => 'posts', 'action' => 'edit']);Возвращает URL, сгенерированный с помощью обратной маршрутизации. -
Router::url(['_name' => 'custom-name', ...]);Возвращает URL, сгенерированный с помощью обратной маршрутизации. Этот формат позволяет использовать именованные маршруты.
Есть несколько «специальных» параметров, которые могут изменить конечную строку URL, которая генерируется
-
_base- Установите в значение false, чтобы удалить базовый путь из сгенерированного URL. Если ваше приложение не находится в корневом каталоге, это можно использовать для генерации URL, которые являются «относительными к Cake». URL, относительные к Cake, необходимы при использовании requestAction. -
_scheme- Установите для создания ссылок на разных схемах, таких какwebcalилиftp. По умолчанию используется текущая схема. -
_host- Установите хост для ссылки. По умолчанию используется текущий хост. -
_port- Установите порт, если необходимо создать ссылки на нестандартных портах. -
_full- Если значение true, то выходRouter::fullBaseUrl()будет добавлен к сгенерированным URL. -
#- Позволяет задать фрагменты хэша URL. -
_ssl- Установите в значение true, чтобы преобразовать сгенерированный URL в https, или в значение false, чтобы принудительно использовать http. -
_name- Имя маршрута. Если вы настроили именованные маршруты, вы можете использовать этот ключ для его указания.
Параметры
- string|array|null
$urlнеобязательно null Массив, определяющий любое из следующего: 'controller', 'action', 'plugin', дополнительно вы можете предоставить элементы маршрутизации или параметры строки запроса. Если строка, то это может быть любая допустимая строка URL.
- boolean
$fullнеобязательно false Если значение true, полный базовый URL будет добавлен к результату. По умолчанию значение false.
Возвращает
stringПолный переведенный URL с базовым путем.
Исключение
Cake\Core\Exception\ExceptionПри отсутствии имени маршрута
Подробности свойств
$_collectionsource
protected static Cake\Routing\RouteCollection
Коллекция маршрутов, к которой будут добавлены маршруты.
$_defaultExtensionssource
protected static array
Определенные по умолчанию расширения с помощью Router::extensions()
[]
$_defaultRouteClasssource
protected static boolean
Класс маршрута по умолчанию.
'Cake\Routing\Route\Route'
$_fullBaseUrlsource
protected static string
Содержит базовую строку, которая будет применяться ко всем сгенерированным URL. Например, https://example.com
$_initialStatesource
protected static array
Начальное состояние заполняется в первый раз при вызове reload(), что находится в нижней части этого файла. Это уловка, так как get_class_vars() возвращает значение статических переменных, даже если они изменились.
[]
$_namedExpressionssource
protected static array
Именованные выражения
[
'Action' => Router::ACTION,
'Year' => Router::YEAR,
'Month' => Router::MONTH,
'Day' => Router::DAY,
'ID' => Router::ID,
'UUID' => Router::UUID
] $_requestssource
protected static array
Сохраняет стек объекта запроса для текущего запроса. Будет содержать более одного объекта запроса при использовании requestAction.
[]
$_urlFilterssource
protected static array
Стек фильтров URL, которые применяются к URL маршрутизации перед передачей параметров в коллекцию маршрутов.
[]
© 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.2/class-Cake.Routing.Router.html