Класс Router
Разбирает URL запроса на контроллер, действие и параметры. Использует подключенные маршруты для сопоставления входящей строки URL с параметрами, которые позволят выполнить запрос. Также обрабатывает преобразование списков параметров в строки URL, используя подключенные маршруты. Маршрутизация позволяет отделить способ взаимодействия мира с вашим приложением (URL) от реализации (контроллеры и действия).
Подключение маршрутов
Подключение маршрутов выполняется с помощью Router::connect(). При разборе входящих запросов или обратном соответствии параметров маршруты перечисляются в порядке их подключения. Для получения дополнительной информации о маршрутах и способах их подключения см. Router::connect().
Константы
-
stringACTION'index|show|add|create|edit|update|remove|del|delete|view|item'
Регулярное выражение для имён действий
-
stringDAY'0[1-9]|[12][0-9]|3[01]'
Регулярное выражение для дней
-
stringID'[0-9]+'
Регулярное выражение для идентификаторов с автоинкрементом
-
stringMONTH'0[1-9]|1[012]'
Регулярное выражение для месяцев
-
stringUUID'[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}'Регулярное выражение для UUID
-
stringYEAR'[12][0-9]{3}'Регулярное выражение для годов
Краткое описание свойств
- $_collection protected static
Cake\Routing\RouteCollectionКоллекция маршрутов, к которой будут добавляться маршруты.
- $_defaultExtensions protected static
array<string>Определённые по умолчанию расширения с помощью Router::extensions()
- $_defaultRouteClass protected static
stringКласс маршрута по умолчанию.
- $_fullBaseUrl protected static
string|nullСодержит базовая строку, которая будет применяться ко всем генерируемым URL. Например
https://example.com - $_initialState protected static
arrayНачальное состояние заполняется в первый раз при вызове reload(), которое находится внизу этого файла. Это уловка, так как get_class_vars() возвращает значение статических переменных, даже если они изменились.
- $_namedExpressions protected static
array<string, string>Имена выражений
- $_request protected static
Cake\Http\ServerRequestСохраняет ссылку на объект запроса.
- $_requestContext protected static
array<string, mixed>Хэш данных контекста запроса.
- $_routePaths protected static
array<string, mixed>Кэш проанализированных путей маршрутов
- $_urlFilters protected static
array<callable>Стек фильтров URL, которые применяются к URL маршрутизации перед передачей параметров в коллекцию маршрутов.
Краткое описание методов
-
_applyUrlFilters() protected static
Применяет все подключенные фильтры URL к URL.
-
addUrlFilter() public static
Добавляет фильтр URL в маршрутизатор.
-
connect() public static deprecated
Подключает новый маршрут в маршрутизатор.
-
createRouteBuilder() public static
Создаёт RouteBuilder для указанного пути.
-
defaultRouteClass() public static
Получить или установить класс по умолчанию для маршрутов.
-
extensions() public static
Получить или установить допустимые расширения для всех маршрутов, подключённых позже.
-
fullBaseUrl() public static
Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полных URL для этого приложения. Если параметры не переданы, возвращается текущее конфигурированное значение.
-
getNamedExpressions() public static
Получает именованные шаблоны маршрутов для использования в config/routes.php
-
getRequest() public static
Получить текущий объект запроса.
-
getRouteCollection() public static
Получить RouteCollection внутри Router
-
normalize() public static
Нормализует URL для целей сравнения.
-
parseRequest() public static
Получить параметры маршрутизации для запроса, если возможно.
-
parseRoutePath() public static
Разбирает строковый путь маршрута
-
pathUrl() public static
Генерирует URL для пути маршрута.
-
plugin() public static deprecated
Добавить маршруты плагинов.
-
prefix() public static deprecated
Создать префиксные маршруты.
-
reload() public static
Перезагружает настройки маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключенные маршруты.
-
resetRoutes() public static
Сбросить маршруты и связанное состояние.
-
reverse() public static
Обращает массив обработанных параметров в строку.
-
reverseToArray() public static
Обращает массив обработанных параметров в массив.
-
routeExists() public static
Находит URL для указанного действия.
-
routes() public static
Получить области маршрутов и подключенные к ним маршруты.
-
scope() public static deprecated
Создать область маршрутизации.
-
setRequest() public static
Установить текущую инстанцию запроса.
-
setRouteCollection() public static
Установить RouteCollection внутри Router
-
unwrapShortString() protected static
Ввести значения по умолчанию маршрута из ключа
_path -
url() public static
Находит URL для указанного действия.
Подробное описание методов
_applyUrlFilters() защищённый статический
_applyUrlFilters(array $url): array
Применяет все подключённые фильтры URL к URL.
Параметры
-
array$url Массив URL, который изменяется.
Возвращает
arrayСм. также
\Cake\Routing\Router::addUrlFilter()
addUrlFilter() публичный статический
addUrlFilter(callable $function): void
Добавляет фильтр URL в Router.
Функции фильтрации URL применяются к каждому массиву $url, предоставленному Router::url(), перед отправкой URL в коллекцию маршрутов.
Функции обратного вызова должны ожидать следующие параметры:
-
$paramsПараметры URL, которые обрабатываются. -
$requestТекущий запрос.
Функция фильтра URL всегда должна возвращать параметры, даже если они не изменены.
Использование
Фильтры URL позволяют легко реализовывать такие функции, как сохранение параметров.
Router::addUrlFilter(function ($params, $request) {
if ($request->getParam('lang') && !isset($params['lang'])) {
$params['lang'] = $request->getParam('lang');
}
return $params;
}); Параметры
-
callable$function Функция для добавления
Возвращает
voidconnect() публичный статический
connect(Cake\Routing\Route\Route|string $route, array|string $defaults = [], array<string, mixed> $options = []): void
Подключает новый маршрут в маршрутизатор.
Провайдер совместимости для \Cake\Routing\RouteBuilder::connect() в / области видимости.
Параметры
-
Cake\Routing\Route\Route|string$route Строка, описывающая шаблон маршрута
-
array|string$defaults необязательный Массив, описывающий параметры маршрута по умолчанию. Эти параметры будут использоваться по умолчанию и могут предоставлять параметры маршрутизации, которые не являются динамическими. См. выше.
-
array<string, mixed>$options необязательный Массив, соответствующий именованным элементам в маршруте регулярным выражениям, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как маршрутизируемые параметры, которые должны быть смещены в переданные аргументы, предоставление шаблонов для маршрутизируемых параметров и предоставление имени пользовательского класса маршрутизации.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionСм. также
\Cake\Routing\Router::scope()
createRouteBuilder() публичный статический
createRouteBuilder(string $path, array<string, mixed> $options = []): Cake\Routing\RouteBuilder
Создаёт RouteBuilder для указанного пути.
Параметры
-
string$path Путь, к которому устанавливается билдер.
-
array<string, mixed>$options необязательный Параметры билдера
Возвращает
Cake\Routing\RouteBuilderdefaultRouteClass() публичный статический
defaultRouteClass(string|null $routeClass = null): string|null
Получение или установка по умолчанию класса маршрута.
Параметры
-
string|null$routeClass необязательный Имя класса.
Возвращает
string|nullextensions() публичный статический
extensions(array<string>|string|null $extensions = null, bool $merge = true): array<string>
Получение или установка допустимых расширений для всех маршрутов, подключенных позднее.
Инструктирует маршрутизатор извлекать расширения файлов из URL. Например, http://example.com/posts.rss даст расширение файла «rss». Само расширение файла доступно в контроллере как $this->request->getParam('_ext'), и используется компонентом RequestHandler для автоматической переключения на альтернативные макеты и шаблоны, а также для загрузки помощников, соответствующих заданному содержимому, например, RssHelper. Для переключения макетов и помощников необходимо, чтобы выбранное расширение имело определённый MIME-тип в Cake\Http\Response.
В этот метод можно передать строку или массив допустимых расширений. Если он вызван без параметров, он вернёт текущий список установленных расширений.
Параметры
-
array<string>|string|null$extensions необязательный Список расширений, которые нужно добавить.
-
bool$merge необязательный Выполнять слияние или перезаписывать существующие расширения. По умолчанию
true.
Возвращает
array<string>fullBaseUrl() публичный статический
fullBaseUrl(string|null $base = null): string
Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полностью квалифицированных URL для данного приложения. Если параметры не переданы, возвращается текущее конфигурированное значение.
Примечание:
Если вы измените значение конфигурации App.fullBaseUrl во время выполнения и ожидаете, что маршрутизатор будет генерировать ссылки, используя новое значение, вам необходимо снова вызвать этот метод, передав это значение.
Параметры
-
string|null$base необязательный Префикс для URL, сгенерированных, содержащий домен. Например:
http://example.com
Возвращает
stringgetNamedExpressions() публичный статический
getNamedExpressions(): array<string, string>
Получает именованные шаблоны маршрутов для использования в config/routes.php
Возвращает
array<string, string>См. также
getRequest() публичный статический
getRequest(): Cake\Http\ServerRequest|null
Получить текущий объект запроса.
Возвращает
Cake\Http\ServerRequest|nullgetRouteCollection() публичный статический
getRouteCollection(): Cake\Routing\RouteCollection
Получить RouteCollection внутри Router
Возвращает
Cake\Routing\RouteCollectionnormalize() публичный статический
normalize(array|string $url = '/'): string
Нормализует URL для целей сравнения.
Удалит базовый путь и заменит все двойные '/' на одиночные. Не будет унифицировать регистр и подчеркивание входного значения.
Параметры
-
array|string$url необязательный URL для нормализации. Может быть массивом или строкой URL.
Возвращает
stringparseRequest() публичный статический
parseRequest(Cake\Http\ServerRequest $request): array
Получение параметров маршрутизации для запроса, если это возможно.
Параметры
-
Cake\Http\ServerRequest$request Запрос для извлечения данных запроса.
Возвращает
arrayИсключения
Cake\Routing\Exception\MissingRouteExceptionПри невозможности обработки маршрута
parseRoutePath() публичный статический
parseRoutePath(string $url): array<string, string>
Разбор пути маршрута в строку
Примеры строк:
- Bookmarks::view
- Admin/Bookmarks::view
- Cms.Articles::edit
- Vendor/Cms.Management/Admin/Articles::view
Параметры
-
string$url Путь маршрута в формате [Плагин.]/[Префикс/]Контроллер::действие
Возвращает
array<string, string>pathUrl() публичный статический
pathUrl(string $path, array $params = [], bool $full = false): string
Генерация URL для пути маршрута.
Примеры пути маршрута:
- Bookmarks::view
- Admin/Bookmarks::view
- Cms.Articles::edit
- Vendor/Cms.Management/Admin/Articles::view
Параметры
-
string$path Путь маршрута, указывающий контроллер и действие, необязательно с плагином и префиксом.
-
array$params необязательный Массив, указывающий любые дополнительные параметры. Также может быть любыми специальными параметрами, поддерживаемыми
Router::url().-
bool$full необязательный Если true, к результату будет добавлен полный базовый URL. По умолчанию false.
Возвращает
stringplugin() public static
plugin(string $name, callable|array $options = [], callable|null $callback = null): void
Добавить маршруты плагина.
Этот метод создаёт область маршрутов, которая включает соответствующую информацию о плагине.
Имя плагина преобразуется в штрихованный вариант для создания маршрута. Если требуется пользовательское имя пути, используйте параметр path.
Маршруты, подключённые в области, будут иметь соответствующий префикс пути, и будет установлено соответствующее ключевое значение маршрута плагина.
Параметры
-
string$name Имя плагина, для которого создаются маршруты
-
callable|array$options необязательно Либо используемые параметры, либо обратный вызов
-
callable|null$callback необязательно Обратный вызов, который создаёт маршруты плагина. Требуется только при определённых параметрах $options
Возвращает
voidprefix() public static
prefix(string $name, callable|array $params = [], callable|null $callback = null): void
Создать маршруты с префиксом.
Этот метод создаёт область маршрутов, которая включает соответствующую информацию о префиксе.
Параметр пути используется для генерации имени параметра маршрута. Например, путь admin приведёт к применению 'prefix' => 'Admin' ко всем связанным маршрутам.
Имя префикса будет преобразовано в штрихованный вариант для создания маршрута. Если требуется пользовательское имя пути, используйте параметр path.
Вы можете повторно открыть префикс сколько угодно раз, а также вкладывать префиксы. Вложенные префиксы приведут к значениям префиксов, таким как Admin/Api, что соответствует пространству имён Controller\Admin\Api\.
Параметры
-
string$name Используемое имя префикса.
-
callable|array$params необязательно Массив значений по умолчанию для маршрута, добавляемых к каждому связанному маршруту. Если параметров нет, этот аргумент может быть вызываемым объектом.
-
callable|null$callback необязательно Обратный вызов для построения маршрутов с префиксом.
Возвращает
voidreload() public static
reload(): void
Перезагружает параметры маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключённые маршруты.
Возвращает
voidresetRoutes() public static
resetRoutes(): void
Сбрасывает маршруты и связанное состояние.
Аналогично reload(), но не сбрасывает всё глобальное состояние, так как это приводит к неправильному поведению в некоторых тестовых сценариях плагинов.
Этот метод сбросит:
- маршруты
- фильтры URL
- свойство инициализации
Расширения и классы маршрутов по умолчанию не будут изменены
Возвращает
voidreverse() public static
reverse(Cake\Http\ServerRequest|array $params, bool $full = false): string
Обращает массив параметров, полученных из анализируемого параметра, в строку.
Работает аналогично Router::url(), но поскольку анализируемые URL-адреса содержат дополнительные ключи, такие как 'pass', '_matchedRoute' и т. д., эти ключи необходимо обработать специальным образом, чтобы обратить массив параметров в строковый URL.
Параметры
-
Cake\Http\ServerRequest|array$params Массив параметров или объект Cake\Http\ServerRequest, который требуется обратить.
-
bool$full необязательно Установите в значение true, чтобы включить полный URL, включая протокол, при обращении URL.
Возвращает
stringreverseToArray() public static
reverseToArray(Cake\Http\ServerRequest|array $params): array
Обращает массив параметров, полученных из анализируемого параметра, в массив.
Работает аналогично Router::url(), но поскольку анализируемые URL-адреса содержат дополнительные ключи, такие как 'pass', '_matchedRoute' и т. д., эти ключи необходимо обработать специальным образом, чтобы обратить массив параметров в строковый URL.
Параметры
-
Cake\Http\ServerRequest|array$params Массив параметров или объект Cake\Http\ServerRequest, который требуется обратить.
Возвращает
arrayrouteExists() public static
routeExists(array|string|null $url = null, bool $full = false): bool
Поиск URL для указанного действия.
Возвращает true, если URL существует
Использование
Параметры
-
array|string|null$url необязательно Массив, определяющий любой из следующих параметров: 'controller', 'action', 'plugin'. Дополнительно, вы можете предоставить элементы маршрутизации или параметры запроса. Если строка, она может быть любым допустимым строковым URL.
-
bool$full необязательно Если true, к результату будет добавлен полный базовый URL. По умолчанию false.
Возвращает
boolСм. также
routes() public static
routes(): arrayCake\Routing\Route\Route>
Получить области маршрутов и связанные с ними маршруты.
Возвращает
arrayCake\Routing\Route\Route>scope() public static
scope(string $path, callable|array $params = [], callable|null $callback = null): void
Создать область маршрутизации.
Области маршрутизации позволяют сохранить DRY-принцип маршрутов и избежать повторения общих префиксов путей и/или наборов параметров.
Области маршрутов будут индексироваться по пути для более быстрого анализа маршрутов. Если вы повторно открываете или используете область, связанные с ней маршруты будут объединены с существующими.
Параметры
Массив $params позволяет определять параметры для области маршрутизации. Перечисленные ниже параметры нельзя использовать в качестве значений по умолчанию для маршрутов.
-
routeClassКласс маршрута, используемый в этой области. По умолчаниюRouter::defaultRouteClass() -
extensionsРасширения, включенные в этой области. По умолчанию — включенные глобально, установленные сRouter::extensions()
Пример
Router::scope('/blog', ['plugin' => 'Blog'], function ($routes) {
$routes->connect('/', ['controller' => 'Articles']);
}); Это приведет к созданию маршрута /blog/, с настройками параметров по умолчанию плагина и контроллера.
Можно использовать Router::plugin() и Router::prefix() в качестве сокращений для создания определенных типов областей.
Параметры
-
string$path Префикс пути для области. Этот путь будет добавлен в начало всех маршрутов в области.
-
callable|array$params необязательно Массив значений по умолчанию для маршрута, добавляемых к каждому связанному маршруту. Если параметров нет, этот аргумент может быть вызываемым объектом.
-
callable|null$callback необязательно Обратный вызов для работы с областью маршрутов.
Возвращает
voidВыбрасывает
InvalidArgumentExceptionПри предоставлении недопустимого вызываемого объекта.
setRequest() public static
setRequest(Cake\Http\ServerRequest $request): void
Установить текущий экземпляр запроса.
Параметры
-
Cake\Http\ServerRequest$request объект запроса.
Возвращает
voidsetRouteCollection() public static
setRouteCollection(Cake\Routing\RouteCollection $routeCollection): void
Установить RouteCollection внутри Router
Параметры
-
Cake\Routing\RouteCollection$routeCollection коллекция маршрутов
Возвращает
voidunwrapShortString() protected static
unwrapShortString(array $url): array
Вставить значения по умолчанию для маршрута из ключа _path
Параметры
-
array$url Массив маршрутов с ключом
_path
Возвращает
arrayurl() public static
url(Psr\Http\Message\UriInterface|array|string|null $url = null, bool $full = false): string
Находит 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- Имя маршрута. Если вы настроили именованные маршруты, вы можете использовать этот ключ для его указания.
Параметры
-
Psr\Http\Message\UriInterface|array|string|null$url optional Массив, задающий любое из следующего: 'controller', 'action', 'plugin' дополнительно, вы можете предоставить элементы маршрута или параметры строки запроса. Если это строка, она может быть любым допустимым URL-строкой, или она может быть экземпляром UriInterface.
-
bool$full optional Если true, к результату будет добавлен полный базовый URL. По умолчанию false.
Возвращает
stringВыбрасывает
Cake\Core\Exception\CakeExceptionПри отсутствии имени маршрута
Подробное описание свойств
$_collection protected static
Коллекция маршрутов, к которой будут добавлены маршруты.
Тип
Cake\Routing\RouteCollection$_defaultExtensions protected static
Определенные по умолчанию расширения с помощью Router::extensions()
Тип
array<string>$_defaultRouteClass protected static
Класс маршрута по умолчанию.
Тип
string$_fullBaseUrl protected static
Содержит базовый текст, который будет применяться ко всем сгенерированным URL. Например, https://example.com
Тип
string|null$_initialState protected static
Начальное состояние заполняется в первый раз, когда вызывается reload(), что находится внизу этого файла. Это уловка, так как get_class_vars() возвращает значение статических переменных, даже если они изменились.
Тип
array$_namedExpressions protected static
Именованные выражения
Тип
array<string, string>$_request protected static
Поддерживает ссылку на объект запроса.
Тип
Cake\Http\ServerRequest$_requestContext protected static
Хэш данных контекста запроса.
Тип
array<string, mixed>$_routePaths protected static
Кэш разобранных путей маршрутов
Тип
array<string, mixed>$_urlFilters protected static
Стек фильтров URL для применения к URL маршрутизации перед передачей параметров в коллекцию маршрутов.
Тип
array<callable>
© 2005–present 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.
https://api.cakephp.org/4.4/class-Cake.Routing.Router.html