Класс Router
Парсит URL запроса на контроллер, действие и параметры. Использует подключенные маршруты для сопоставления входящей строки URL с параметрами, которые позволят обработать запрос. Также обрабатывает преобразование списков параметров в строки URL, используя подключенные маршруты. Маршрутизация позволяет отделить способ взаимодействия мира с вашим приложением (URL) от реализации (контроллеры и действия).
Подключение маршрутов
Подключение маршрутов выполняется с помощью Router::connect(). При парсинге входящих запросов или обратном сопоставлении параметров, маршруты перечисляются в порядке их подключения. Для получения дополнительной информации о маршрутах и способах их подключения, см. Router::connect().
Подробное описание методов
_applyUrlFiltersисточник защищённый статический
_applyUrlFilters( array $url )
Применяет все подключенные фильтры URL к URL.
Параметры
- массив
$url - Массив URL, который изменяется.
Возвращает
arrayИзменённый URL.
См.
Cake\Routing\Router::url()Cake\Routing\Router::addUrlFilter()_setContextисточник защищённый статический
_setContext( Cake\Network\Request $request )
Сохраняет контекст запроса для данного запроса.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
addUrlFilterисточник публичный статический
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источник публичный статический
connect( string $route , array $defaults [] , array $options [] )
Подключает новый маршрут в маршрутизатор.
Провайдер совместимости для \Cake\Routing\RouteBuilder::connect() в рамках /.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$defaultsнеобязательный [] - Массив, описывающий параметры маршрута по умолчанию. Эти параметры будут использоваться по умолчанию и могут предоставить параметры маршрутизации, которые не являются динамическими. См. выше.
- массив
$optionsнеобязательный [] - Массив, сопоставляющий именованные элементы маршрута с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как то, какие параметры маршрута должны быть сдвинуты в переданные аргументы, предоставляя шаблоны для параметров маршрутизации и предоставляя имя пользовательского класса маршрутизации.
Выбрасывает
Cake\Core\Exception\Exception\Cake\Core\Exception\Exception
См.
Cake\Routing\RouteBuilder::connect()Cake\Routing\Router::scope()defaultRouteClassисточник публичный статический
defaultRouteClass( string|null $routeClass null )
Получить или установить класс маршрута по умолчанию.
Параметры
- строка|null
$routeClassнеобязательный null - Имя класса.
Возвращает
string|nullстрока|null
extensionsисточник публичный статический
extensions( array|string $extensions null , boolean $merge true )
Получить или установить допустимые расширения для всех подключенных позже маршрутов.
Инструктирует маршрутизатор извлекать расширения файлов из URL. Например, http://example.com/posts.rss даст расширение файла "rss". Само расширение файла доступно в контроллере как $this->request->params['_ext'], и используется компонентом RequestHandler для автоматического переключения на альтернативные макеты и шаблоны, а также для загрузки помощников, соответствующих заданному содержимому, например, RssHelper. Переключение макетов и помощников требует, чтобы выбранное расширение имело определённый тип MIME в Cake\Network\Response.
В этот метод можно передать строку или массив допустимых расширений. Если метод вызван без параметров, он вернёт текущий список установленных расширений.
Параметры
- массив|строка
$extensionsнеобязательный null - Список расширений для добавления.
- логическое значение
$mergeнеобязательный true - Включить ли слияние или замену существующих расширений. По умолчанию
true.
Возвращает
arrayМассив расширений, которые маршрутизатор настроен распознавать.
fullBaseUrlисточник публичный статический
fullBaseUrl( string|null $base null )
Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полных URL для этого приложения. Если не переданы параметры, возвращается текущее конфигурированное значение.
Примечание:
Если вы измените значение конфигурации App.fullBaseUrl во время выполнения и ожидаете, что маршрутизатор будет генерировать ссылки с использованием нового значения, вам необходимо повторно вызвать этот метод, передав это значение.
Параметры
- строка|null
$baseнеобязательный null - Префикс для генерируемых URL, содержащих домен. Например:
http://example.com
Возвращает
stringстрока
getNamedExpressionsисточник публичный статический
getNamedExpressions( )
Получает именованные шаблоны маршрутов для использования в config/routes.php
Возвращает
arrayИменованные элементы маршрута
См.
Cake\Routing\Router::$_namedExpressionsgetRequestисточник публичный статический
getRequest( boolean $current false )
Получить текущий объект запроса или первый.
Параметры
- логическое значение
$currentнеобязательный false - True, чтобы получить текущий запрос, или false, чтобы получить первый.
Возвращает
Cake\Network\Request|null.\Cake\Network\Request|null.
mapResourcesисточник публичный статический
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()normalizesource public static
normalize( array|string $url '/' )
Нормализует URL для целей сравнения.
Убирает базовый путь и заменяет все двойные '/' одинарными. Не будет унифицировать регистр и подчеркивание входного значения.
Параметры
- массив|строка
$urlнеобязательно '/' - URL для нормализации. Может быть массивом или строкой URL.
Возвращает
stringНормализованный URL
parsesource public static
parse( string $url )
Парсит заданную строку URL. Возвращает параметры 'routing' для этого URL.
Параметры
- строка
$url - URL для парсинга
Возвращает
arrayРазбор элементов URL
Выбрасывает
Cake\Routing\Exception\MissingRouteExceptionПри невозможности обработки маршрута
parseNamedParamssource 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Измененный запрос
pluginsource public static
plugin( string $name , array|callable $options [] , callable|null $callback null )
Добавить маршруты плагина.
Этот метод создаёт коллекцию маршрутов с ограниченной областью видимости, которая включает соответствующую информацию о плагине.
Имя плагина будет приведен к нижнему регистру и соединён через подчеркивание для создания пути маршрутизации. Если вам нужен пользовательский путь, используйте опцию path.
Маршруты, подключенные к коллекции с ограниченной областью видимости, будут иметь соответствующий префикс пути и соответствующий ключ маршрутизации плагина.
Параметры
- строка
$name - Имя плагина для создания маршрутов
- массив|вызов
$optionsнеобязательно [] - Опции для использования или обратный вызов
- вызов|null
$callbackнеобязательно null - Обратный вызов для построения маршрутов плагина. Требуется только при определении $options
popRequestsource public static
popRequest( )
Извлекает запрос из стека запросов. Используется при вызове requestAction
Возвращает
Cake\Network\RequestЗапрос, удаленный из стека.
См. также
Cake\Routing\Router::pushRequest()Object::requestAction()
prefixsource public static
prefix( string $name , array|callable $params [] , callable $callback null )
Создать маршруты с префиксом.
Этот метод создает коллекцию маршрутов с ограниченной областью видимости, которая включает соответствующую информацию о префиксе.
Параметр пути используется для генерации имени параметра маршрутизации. Например, путь admin приведет к применению 'prefix' => 'admin' ко всем подключенным маршрутам.
Вы можете повторно открывать префикс столько раз, сколько нужно, а также вкладывать префиксы. Вложенные префиксы приведут к значениям префиксов, таким как admin/api, что соответствует пространству имён Controller\Admin\Api\.
Параметры
- строка
$name - Имя префикса для использования.
- массив|вызов
$paramsнеобязательно [] - Массив значений по умолчанию для маршрутизации, добавляемых к каждому подключенному маршруту. Если параметров нет, этот аргумент может быть обратным вызовом.
- вызов
$callbackнеобязательно null - Обратный вызов для построения маршрутов с префиксом.
pushRequestsource public static
pushRequest( Cake\Network\Request $request )
Добавить запрос в стек запросов. Добавление запроса устанавливает контекст запроса, используемый при генерации URL.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
redirectsource public static
redirect( string $route , array $url , array $options [] )
Подключает новый маршрут перенаправления в маршрутизатор.
Прокси-метод совместимости для \Cake\Routing\RouteBuilder::redirect() в области видимости /.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$url - URL для перенаправления. Может быть строкой или Cake URL на основе массива.
- массив
$optionsнеобязательно [] - Массив, соответствующий именованным элементам в маршруте, сопоставленным с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрутизации, которые должны быть перемещены в переданные аргументы, а также шаблоны для параметров маршрутизации.
См. также
Cake\Routing\RouteBuilder::redirect()reloadsource public static
reload( )
Перезагружает настройки маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключенные маршруты.
reversesource 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.
Возвращает
stringСтрока, являющаяся результатом обратного преобразования массива
routessource public static
routes( )
Получить области видимости маршрутов и связанные с ними маршруты.
Возвращает
arrayмассив
scopesource 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При передаче недопустимого обратного вызова.
setRequestInfosource public static
setRequestInfo( Cake\Network\Request|array $request )
Принимает параметры и информацию о пути из диспетчера, устанавливает эти параметры в качестве текущих параметров запроса, которые объединяются с массивами URL, созданными позднее в запросе.
Вложенные запросы создадут стек запросов. Вы можете удалить запросы с помощью Router::popRequest(). Это делается автоматически при использовании Object::requestAction().
Принимает объект Cake\Network\Request или массив массивов. Поддержка приема массивов может быть удалена в будущем.
Параметры
-
Cake\Network\Request|массив$request - Параметры и информация о пути или объект Cake\Network\Request.
urlsource public static
url( string|array $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- Имя маршрута. Если вы настроили именованные маршруты, вы можете использовать этот ключ для его указания.
Параметры
- строка|массив
$urlнеобязательно null - Массив, указывающий любой из следующих элементов: 'controller', 'action', 'plugin'. Кроме того, вы можете предоставить маршрутизированные элементы или параметры строки запроса. Если строка, она может быть любым допустимым значением строки URL.
- boolean
$fullнеобязательно false - Если true, полный базовый URL будет добавлен к результату. По умолчанию false.
Возвращает
stringПолный URL с базовым путем.
Выбрасывает
Cake\Core\Exception\ExceptionПри отсутствии имени маршрута
Резюме констант
string | ACTION Регулярное выражение для имен действий | 'index|show|add|create|edit|update|remove|del|delete|view|item' |
string | DAY Регулярное выражение для дней | '0[1-9]|[12][0-9]|3[01]' |
string | ID Регулярное выражение для идентификаторов автоинкремента | '[0-9]+' |
string | MONTH Регулярное выражение для месяцев | '0[1-9]|1[012]' |
string | UUID Регулярное выражение для UUID | '[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 | YEAR Регулярное выражение для годов | '[12][0-9]{3}' |
Резюме свойств
© 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.Router.html