Класс Router
Разбирает URL запроса на контроллер, действие и параметры. Использует подключенные маршруты для сопоставления входящей строки URL с параметрами, которые позволят обработать запрос. Также обрабатывает преобразование списков параметров в строки URL, используя подключенные маршруты. Маршрутизация позволяет отделить способ взаимодействия мира с вашим приложением (URL) от реализации (контроллеры и действия).
Подключение маршрутов
Подключение маршрутов выполняется с помощью Router::connect(). При разборе входящих запросов или обратном соответствии параметров маршруты перечисляются в порядке их подключения. Вы можете изменить порядок подключенных маршрутов с помощью Router::promote(). Для получения дополнительной информации о маршрутах и способах их подключения см. Router::connect().
Именованные параметры
Именованные параметры позволяют встраивать пары ключ:значение в сегменты пути. Это позволяет создавать структуры хешей, используя URL. Вы можете определить, как работают именованные параметры в вашем приложении, используя Router::connectNamed()
Авторское право: Авторское право (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Расположено в Cake/Routing/Router.php
Подробное описание методов
_handleNoRouteисточник защищенный статический
_handleNoRoute( array $url )
Специальный метод обратного вызова, который обрабатывает массивы URL, которые не могут соответствовать ни одному из определенных маршрутов.
Параметры
- массив
$url - URL, который не соответствовал ни одному маршруту
Возвращает
stringСгенерированный URL для массива
См. также
Router::url()_parseExtensionисточник защищенный статический
_parseExtension( string $url )
Извлекает расширение файла из URL, если Router::parseExtensions() включен.
Параметры
- строка
$url - URL.
Возвращает
arrayВозвращает массив, содержащий измененный URL и извлеченное расширение.
_validateRouteClassисточник защищенный статический
_validateRouteClass( string $routeClass )
Проверяет, существует ли переданный класс маршрута и является ли он подклассом CakeRoute
Параметры
- строка
$routeClass - Имя класса маршрута
Возвращает
stringстрока
Вызывает
RouterExceptionRouterException
connectисточник публичный статический
connect( string $route , array $defaults array() , array $options array() )
Подключает новый маршрут в маршрутизатор.
Маршруты — это способ соединения URL-адресов запросов с объектами в вашем приложении. В основе маршрутов лежит набор регулярных выражений, которые используются для сопоставления запросов с местами назначения.
Примеры:
Router::connect('/:controller/:action/*');
Первый токен ':controller' будет использоваться как имя контроллера, а второй — как имя действия. Синтаксис '/*' делает этот маршрут жадным, так что он будет соответствовать таким запросам, как /posts/index, а также запросам, как /posts/edit/1/foo/bar.
Router::connect('/home-page', array('controller' => 'pages', 'action' => 'display', 'home'));
Выше показано использование параметров по умолчанию маршрута и предоставление параметров маршрутизации для статического маршрута.
Router::connect( '/:lang/:controller/:action/:id', array(), array('id' => '[0-9]+', 'lang' => '[a-z]{3}') );
Показывает подключение маршрута с пользовательскими параметрами маршрута, а также предоставляет шаблоны для этих параметров. Шаблоны для параметров маршрутизации не нуждаются в группах захвата, так как для каждого параметра маршрута будет добавлена одна группа захвата.
$defaults объединяется с результатами разбора URL-адреса запроса для формирования конечного места назначения маршрутизации и его параметров. Это место назначения выражается как ассоциативный массив в Router. См. вывод Router::parse().
$options предоставляет четыре «специальных» ключа. pass, named, persist и routeClass имеют специальное значение в массиве $options.
-
passиспользуется для определения того, какие из параметров маршрута должны быть перемещены в массив pass. Добавление параметра в массив pass удалит его из обычного массива маршрута. Пример:'pass' => array('slug') -
persistиспользуется для определения параметров маршрута, которые должны быть автоматически включены при генерации новых URL-адресов. Вы можете переопределить постоянные параметры, повторно определив их в URL-адресе, или удалить их, установив параметр в значениеfalse. Пример:'persist' => array('lang') -
routeClassиспользуется для расширения и изменения способа разбора запросов и обработки обратной маршрутизации отдельных маршрутов с помощью пользовательского класса маршрутизации. Пример:'routeClass' => 'SlugRoute' -
namedиспользуется для настройки именованных параметров на уровне маршрута. Этот ключ использует те же параметры, что и Router::connectNamed()
Вы также можете добавить дополнительные условия для сопоставления маршрутов в массив $defaults. Следующие условия могут быть использованы:
-
[type]Сопоставлять только запросы для определенных типов контента. -
[method]Сопоставлять только запросы с определенными HTTP-методами. -
[server]Сопоставлять только при совпадении $_SERVER['SERVER_NAME'] с заданным значением.
Пример использования условия [method]:
Router::connect('/tasks', array('controller' => 'tasks', 'action' => 'index', '[method]' => 'GET'));
Вышеуказанный маршрут будет сопоставляться только для запросов GET. Запросы POST не будут соответствовать этому маршруту.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$defaultsнеобязательно массив() - Массив, описывающий параметры маршрута по умолчанию. Эти параметры будут использоваться по умолчанию и могут предоставлять параметры маршрутизации, которые не являются динамическими. См. выше.
- массив
$optionsнеобязательно массив() - Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрута, которые должны быть переданы в аргументы, предоставление шаблонов для параметров маршрутизации и указание имени пользовательского класса маршрутизации.
Возвращает
arrayМассив маршрутов
Вызывает
RouterExceptionRouterException
См. также
Router::$routesparse().
connectNamedисточник публичный статический
connectNamed( array $named , array $options array() )
Определяет, какие именованные параметры CakePHP должен извлекать из входящих URL. По умолчанию CakePHP извлекает все именованные параметры из входящих URL. Однако, если вы хотите получить больший контроль над тем, как обрабатываются именованные параметры, вы можете использовать одну из следующих настроек:
Не извлекать именованные параметры:
Router::connectNamed(false);
Извлекать только параметры по умолчанию, используемые для пагинации CakePHP:
Router::connectNamed(false, array('default' => true));
Извлекать только параметр page, если его значение является числом:
Router::connectNamed(array('page' => '[\d]+'), array('default' => false, 'greedy' => false));
Извлекать только параметр page независимо от значения:
Router::connectNamed(array('page'), array('default' => false, 'greedy' => false));
Извлекать только параметр page, если текущее действие равно 'index'.
Router::connectNamed( array('page' => array('action' => 'index')), array('default' => false, 'greedy' => false) );
Извлекать только параметр page, если текущее действие равно 'index' и контроллер равен 'pages'.
Router::connectNamed( array('page' => array('action' => 'index', 'controller' => 'pages')), array('default' => false, 'greedy' => false) );
Параметры
-
greedyУстановка этого значения в true заставит Router извлекать все именованные параметры. Установка в false будет извлекать только подключенные именованные параметры. -
defaultУстановите это значение в true, чтобы добавить набор именованных параметров по умолчанию. -
resetУстановите в true, чтобы очистить существующие правила и начать заново. -
separatorИзменить строку, используемую для разделения ключа и значения в именованном параметре. По умолчанию:
Параметры
- массив
$named - Список именованных параметров. Принимаются пары ключ-значение, где значения — это либо строки регулярных выражений для сопоставления, либо массивы, как показано выше.
- массив
$optionsнеобязательно массив() - Позволяет контролировать все настройки: разделитель, жадность, сброс, по умолчанию
Возвращает
arrayмассив
currentRouteисточник публичный статический
currentRoute( )
Возвращает маршрут, соответствующий текущему запросу (полезно для отслеживания requestAction).
Возвращает
CakeRouteСоответствующий объект маршрута.
defaultRouteClasssource public static
defaultRouteClass( string $routeClass null )
Установить или вернуть текущий класс маршрута по умолчанию
Параметры
- строка
$routeClassнеобязательно null - Класс маршрута, который нужно установить по умолчанию.
Возвращает
string|nullКласс маршрута по умолчанию.
Выбрасывает
RouterExceptionRouterException
extensionssource public static
extensions( )
Получить список расширений, которые можно обработать Router.
Чтобы первоначально установить расширения, используйте Router::parseExtensions(). Чтобы добавить больше, см. setExtensions()
Возвращает
arrayМассив расширений, которые настроен Router для обработки.
fullBaseUrlsource public static
fullBaseUrl( string $base null )
Устанавливает полный базовый URL, который будет использоваться как префикс для генерации полных URL-адресов для этого приложения. Если параметры не переданы, возвращается текущее значение.
Примечание:
Если вы измените значение конфигурации `App.fullBaseUrl во время выполнения и ожидаете, что маршрутизатор будет генерировать ссылки с использованием нового значения, вам необходимо повторно вызвать этот метод, передав это значение.
Параметры
- строка
$baseнеобязательно null - Префикс для URL-адресов, генерируемых, содержащий домен. Например:
`http://example.com`
Возвращает
stringстрока
getNamedExpressionssource public static
getNamedExpressions( )
Получает элементы именованных маршрутов для использования в app/Config/routes.php
Возвращает
arrayЭлементы именованных маршрутов
См. также
Router::$_namedExpressionsgetParamsource public static
getParam( string $name 'controller' , boolean $current false )
Получает параметр URL по имени
Параметры
- строка
$nameнеобязательно 'controller' - Имя параметра
- логическое значение
$currentнеобязательно false - Текущий параметр, полезно при использовании requestAction
Возвращает
string|nullЗначение параметра
getParamssource public static
getParams( boolean $current false )
Получает информацию о параметрах
Параметры
- логическое значение
$currentнеобязательно false - Получить текущий параметр запроса, полезно при использовании requestAction
Возвращает
arrayИнформация о параметрах
getPathssource public static
getPaths( boolean $current false )
Получает информацию о пути
Параметры
- логическое значение
$currentнеобязательно false - Текущий параметр, полезно при использовании requestAction
Возвращает
arrayмассив
getRequestsource public static
getRequest( boolean $current false )
Получает текущий объект запроса или первый объект.
Параметры
- логическое значение
$currentнеобязательно false - True - получить текущий объект запроса, false - получить первый объект.
Возвращает
CakeRequest|nullNull, если стек пуст.
mapResourcessource public static
mapResources( string|array $controller , array $options array() )
Создает маршруты REST-ресурсов для заданных контроллера(ов). При создании маршрутов ресурсов для плагина по умолчанию префикс изменяется на версию имени плагина в нижнем регистре с символами подчеркивания. Передав префикс, вы можете переопределить это поведение.
Параметры:
- 'id' - фрагмент регулярного выражения для сопоставления идентификаторов. По умолчанию соответствует целочисленным значениям и UUID.
- 'prefix' - URL-префикс для используемых маршрутов. По умолчанию '/'.
Параметры
- строка|массив
$controller - Имя контроллера или массив имен контроллеров (например, "Posts" или "ListItems")
- массив
$optionsнеобязательно array() - Параметры для использования при генерации маршрутов REST
Возвращает
arrayМассив сопоставленных ресурсов
namedConfigsource public static
namedConfig( )
Получает текущие значения конфигурации именованных параметров.
Возвращает
arrayмассив
См. также
Router::$_namedConfignormalizesource 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
parseExtensionssource public static
parseExtensions( )
Инструктирует маршрутизатор разделить расширения файла из URL.
Например, http://example.com/posts.rss даст расширение файла "rss". Само расширение файла доступно в контроллере как $this->params['ext'], и используется компонентом RequestHandler для автоматической смены макетов и шаблонов, и загрузки помощников, соответствующих заданному содержимому, например, RssHelper. Для смены макетов и помощников необходимо, чтобы выбранное расширение имело определённый MIME-тип в CakeResponse
Список допустимых расширений может быть передан в этот метод, например Router::parseExtensions('rss', 'xml'); Если параметры не заданы, всё после первого . (точки) после последнего / в URL будет обработано, исключая параметры запроса (например, ?q=...).
См. также
RequestHandler::startup()popRequestsource public static
popRequest( )
Извлекает запрос из стека запросов. Используется при выполнении requestAction
Возвращает
CakeRequestЗапрос, удалённый из стека.
См. также
Router::setRequestInfo()Object::requestAction()prefixessource public static
prefixes( )
Возвращает список префиксов, используемых в связанных маршрутах
Возвращает
arrayСписок префиксов, используемых в связанных маршрутах
promotesource public static
promote( integer $which null )
Переместить маршрут (по умолчанию, последний добавленный) в начало списка
Параметры
- целое число
$whichнеобязательно null - Индекс массива, представляющий маршрут для перемещения. Например, если добавлено 3 маршрута, последний маршрут будет иметь индекс 2.
Возвращает
booleanВозвращает false, если маршрут с указанным индексом не существует.
queryStringsource public static
queryString( string|array $q , array $extra array() , boolean $escape false )
Генерирует правильно сформированную строку запроса из $q
Параметры
- строка|массив
$q - Строка запроса. Это либо строка уже скомпилированных аргументов строки запроса, либо массив аргументов для преобразования в строку запроса.
- массив
$extraнеобязательно array() - Дополнительные параметры строки запроса.
- логическое значение
$escapeнеобязательно false - Использовать ли экранированный &
Возвращает
arrayмассив
redirectsource public static
redirect( string $route , array $url , array $options array() )
Подключает новый маршрут перенаправления в маршрутизатор.
Маршруты перенаправления отличаются от обычных маршрутов тем, что они выполняют фактическое перенаправление заголовка, если совпадение найдено. Перенаправление может происходить внутри приложения или перенаправлять на внешний ресурс.
Примеры:
Router::redirect('/home/*', array('controller' => 'posts', 'action' => 'view'), array('persist' => true));
Перенаправляет /home/* на /posts/view и передает параметры в /posts/view. Использование массива в качестве пункта назначения перенаправления позволяет использовать другие маршруты для определения того, куда должна быть перенаправлена строка URL.
Router::redirect('/posts/*', 'http://google.com', array('status' => 302));
Перенаправляет /posts/* на http://google.com со статусом HTTP 302
Опции:
-
statusУстанавливает статус HTTP (по умолчанию 301) -
persistПередает параметры перенаправленному маршруту, если это возможно. Это полезно для жадных маршрутов, маршруты, заканчивающиеся на*являются жадными. Вы можете переназначить URL-адреса и не потерять переданные/именованные аргументы.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$url - URL-адрес перенаправления. Может быть строкой или URL-адресом CakePHP, основанным на массиве
- массив
$optionsнеобязательно array() - Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым этот элемент должен соответствовать. Также содержит дополнительные параметры, такие как параметры маршрута, которые должны быть перенесены в переданные аргументы. А также обеспечивает шаблоны для параметров маршрутизации.
Возвращает
arrayМассив маршрутов
См. также
Router::$routesreloadsource public static
reload( )
Перезагружает параметры маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключенные маршруты.
requestRoutesource public static
requestRoute( )
Возвращает маршрут, соответствующий текущему URL-адресу запроса.
Возвращает
CakeRouteОбъект соответствующего маршрута.
resourceMapsource public static
resourceMap( array $resourceMap null )
Получение и установка карты ресурсов.
Параметры
- массив
$resourceMapнеобязательно null - Карта ресурсов
Возвращает
mixedсмешанный тип
См. также
Router::$_resourceMapreversesource public static
reverse( CakeRequest|array $params , boolean $full false )
Обращает массив параметров, полученных после парсинга, в строку.
Функционирует аналогично Router::url(), но поскольку обработанные URL-адреса содержат дополнительные ключи 'pass', 'named' и 'url.url', эти ключи нужно обработать, чтобы преобразовать массив параметров в строку URL.
Это убирает имена параметров 'autoRender', 'bare', 'requested' и 'return', так как они используются для внутренних процессов CakePHP и обычно не должны входить в URL-адрес вывода.
Параметры
-
CakeRequest|массив$params - Массив параметров или объект CakeRequest, который нужно обратить.
- логическое значение
$fullнеобязательно false - Установите значение в true, чтобы включить весь URL, включая протокол, при обращении URL.
Возвращает
stringСтрока, являющаяся обращенным результатом массива
setExtensionssource public static
setExtensions( array $extensions , boolean $merge true )
Установить/добавить допустимые расширения.
Чтобы расширения были обработаны, все равно нужно вызвать Router::parseExtensions()
Параметры
- массив
$extensions - Список расширений, которые нужно добавить в качестве допустимых расширений
- логическое значение
$mergeнеобязательно true - По умолчанию значение true объединит расширения. Установите значение в false, чтобы перезаписать текущие расширения
Возвращает
arrayмассив
setRequestInfosource public static
setRequestInfo( CakeRequest|array $request )
Принимает информацию о параметрах и пути от диспетчера, устанавливает эти параметры как текущие параметры запроса, которые объединяются с массивами URL, созданными позднее в запросе.
Вложенные запросы создадут стек запросов. Вы можете удалить запросы, используя Router::popRequest(). Это делается автоматически при использовании Object::requestAction().
Принимает либо объект CakeRequest, либо массив массивов. Поддержка приема массивов может быть удалена в будущем.
Параметры
-
CakeRequest|массив$request - Информация о параметрах и пути или объект CakeRequest.
stripPluginsource public static
stripPlugin( string $base , string $plugin null )
Удаляет имя плагина из базового URL.
Параметры
- строка
$base - Базовый URL
- строка
$pluginнеобязательно null - Имя плагина
Возвращает
stringБазовый URL с удалённым именем плагина, если оно присутствует
urlsource public static
url( string|array $url null , boolean|array $full false )
Находит URL для указанного действия.
Возвращает URL-адрес, указывающий на комбинацию контроллера и действия. Параметр $url может быть:
- Пустым - метод найдет адрес фактического контроллера/действия.
- '/' - метод найдет базовый URL приложения.
- Комбинацией контроллера/действия - метод найдет URL для него.
Существует несколько «специальных» параметров, которые могут изменить конечную строку URL
-
base- Установите в false, чтобы удалить базовый путь из сгенерированного URL. Если ваше приложение не находится в корневом каталоге, это можно использовать для создания URL, которые являются 'cake-относительными'. cake-относительные URL-адреса необходимы при использовании requestAction. -
?- Принимает массив параметров строки запроса -
#- Позволяет задать фрагменты URL-хеша. -
full_base- Если значение true, значениеRouter::fullBaseUrl()будет добавлено перед сгенерированными URL-адресами.
Параметры
- строка|массив
$urlнеобязательно null - Cake-относительный URL, например, "/products/edit/92" или "/presidents/elect/4" или массив, определяющий любые из следующих: 'controller', 'action' и/или 'plugin', наряду с именованными аргументами (элементы массива с ключами) и стандартными аргументами URL (индексированные элементы массива)
- логическое значение|массив
$fullнеобязательно false - Если (bool) true, полный базовый URL будет добавлен в результат. Если массив, принимает следующие ключи - escape - используется при создании URL, встроенных в html, экранирует строку запроса '&' - full - если true, полный базовый URL будет добавлен.
Возвращает
stringПолный переведенный URL-адрес с базовым путем.
Резюме констант
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/2.7/class-Router.html