Spec-Zone.ru › CakePHP 3.1

Класс Router

Парсит URL запроса на контроллер, действие и параметры. Использует подключенные маршруты для сопоставления входящей строки URL с параметрами, которые позволят обработать запрос. Также обрабатывает преобразование списков параметров в строки URL, используя подключенные маршруты. Маршрутизация позволяет отделить способ взаимодействия мира с вашим приложением (URL) от реализации (контроллеры и действия).

Подключение маршрутов

Подключение маршрутов выполняется с помощью Router::connect(). При парсинге входящих запросов или обратном сопоставлении параметров, маршруты перечисляются в порядке их подключения. Для получения дополнительной информации о маршрутах и способах их подключения, см. Router::connect().

Пространство имён: Cake\Routing
Расположено в Routing/Router.php

Подробное описание методов

_applyUrlFiltersисточник защищённый статический

_applyUrlFilters( array $url )

Применяет все подключенные фильтры URL к URL.

Параметры

массив $url
Массив URL, который изменяется.

Возвращает

array
Изменённый URL.

См.

Cake\Routing\Router::url()
Cake\Routing\Router::addUrlFilter()

_loadRoutesисточник защищённый статический

_loadRoutes( )

Загружает конфигурацию маршрутов

_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::$_namedExpressions

getRequestисточник публичный статический

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()
END_OF_DOCUMENT_MARKER

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}'

Резюме свойств

$_collectionsource

protected static Cake\Routing\RouteCollection

Коллекция маршрутов, к которой будут добавлены маршруты.

$_defaultExtensionssource

protected static массив

Определенные по умолчанию расширения с помощью Router::extensions()

[]

$_defaultRouteClasssource

protected static boolean

Класс маршрута по умолчанию.

'Cake\Routing\Route\Route'

$_fullBaseUrlsource

protected static строка

Содержит базовый текст, который будет применяться ко всем сгенерированным URL. Например, https://example.com

$_initialStatesource

protected static массив

Начальное состояние заполняется в первый раз, когда вызывается reload(), что находится в конце этого файла. Это уловка, так как get_class_vars() возвращает значение статических переменных, даже если они изменились.

[]

$_namedExpressionssource

protected static массив

Именованные выражения

[
    'Action' => Router::ACTION,
    'Year' => Router::YEAR,
    'Month' => Router::MONTH,
    'Day' => Router::DAY,
    'ID' => Router::ID,
    'UUID' => Router::UUID
]

$_requestContextsource

protected static массив

Хэш данных контекста запроса.

[]

$_requestssource

protected static массив

Поддерживает стек объектов запроса для текущего запроса. Это будет содержать более одного объекта запроса, когда используется requestAction.

[]

$_urlFilterssource

protected static массив

Стек фильтров URL, которые применяются к URL маршрутизации перед передачей параметров в коллекцию маршрутов.

[]

$initializedsource

public static boolean

Были загружены маршруты?

false

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API