Spec-Zone.ru › CakePHP 4.4

Класс Router

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

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

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

Пространство имён: Cake\Routing

Константы

  • 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
    '[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

  • string
    YEAR
    '[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 маршрутизации перед передачей параметров в коллекцию маршрутов.

END_OF_DOCUMENT_MARKER

Краткое описание методов

  • _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::url()
\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

Функция для добавления

Возвращает

void

connect() публичный статический

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\RouteBuilder::connect()
\Cake\Routing\Router::scope()

createRouteBuilder() публичный статический

createRouteBuilder(string $path, array<string, mixed> $options = []): Cake\Routing\RouteBuilder

Создаёт RouteBuilder для указанного пути.

Параметры

string $path

Путь, к которому устанавливается билдер.

array<string, mixed> $options необязательный

Параметры билдера

Возвращает

Cake\Routing\RouteBuilder

defaultRouteClass() публичный статический

defaultRouteClass(string|null $routeClass = null): string|null

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

Параметры

string|null $routeClass необязательный

Имя класса.

Возвращает

string|null

extensions() публичный статический

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

Возвращает

string

getNamedExpressions() публичный статический

getNamedExpressions(): array<string, string>

Получает именованные шаблоны маршрутов для использования в config/routes.php

Возвращает

array<string, string>

См. также

\Cake\Routing\Router::$_namedExpressions

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

getRequest(): Cake\Http\ServerRequest|null

Получить текущий объект запроса.

Возвращает

Cake\Http\ServerRequest|null

getRouteCollection() публичный статический

getRouteCollection(): Cake\Routing\RouteCollection

Получить RouteCollection внутри Router

Возвращает

Cake\Routing\RouteCollection

normalize() публичный статический

normalize(array|string $url = '/'): string

Нормализует URL для целей сравнения.

Удалит базовый путь и заменит все двойные '/' на одиночные. Не будет унифицировать регистр и подчеркивание входного значения.

Параметры

array|string $url необязательный

URL для нормализации. Может быть массивом или строкой URL.

Возвращает

string

parseRequest() публичный статический

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.

Возвращает

string

plugin() public static

plugin(string $name, callable|array $options = [], callable|null $callback = null): void

Добавить маршруты плагина.

Этот метод создаёт область маршрутов, которая включает соответствующую информацию о плагине.

Имя плагина преобразуется в штрихованный вариант для создания маршрута. Если требуется пользовательское имя пути, используйте параметр path.

Маршруты, подключённые в области, будут иметь соответствующий префикс пути, и будет установлено соответствующее ключевое значение маршрута плагина.

Параметры

string $name

Имя плагина, для которого создаются маршруты

callable|array $options необязательно

Либо используемые параметры, либо обратный вызов

callable|null $callback необязательно

Обратный вызов, который создаёт маршруты плагина. Требуется только при определённых параметрах $options

Возвращает

void

prefix() 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 необязательно

Обратный вызов для построения маршрутов с префиксом.

Возвращает

void

reload() public static

reload(): void

Перезагружает параметры маршрутизатора по умолчанию. Сбрасывает все переменные класса и удаляет все подключённые маршруты.

Возвращает

void

resetRoutes() public static

resetRoutes(): void

Сбрасывает маршруты и связанное состояние.

Аналогично reload(), но не сбрасывает всё глобальное состояние, так как это приводит к неправильному поведению в некоторых тестовых сценариях плагинов.

Этот метод сбросит:

  • маршруты
  • фильтры URL
  • свойство инициализации

Расширения и классы маршрутов по умолчанию не будут изменены

Возвращает

void

reverse() 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.

Возвращает

string

reverseToArray() public static

reverseToArray(Cake\Http\ServerRequest|array $params): array

Обращает массив параметров, полученных из анализируемого параметра, в массив.

Работает аналогично Router::url(), но поскольку анализируемые URL-адреса содержат дополнительные ключи, такие как 'pass', '_matchedRoute' и т. д., эти ключи необходимо обработать специальным образом, чтобы обратить массив параметров в строковый URL.

Параметры

Cake\Http\ServerRequest|array $params

Массив параметров или объект Cake\Http\ServerRequest, который требуется обратить.

Возвращает

array

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

См. также

Router::url()

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

объект запроса.

Возвращает

void

setRouteCollection() public static

setRouteCollection(Cake\Routing\RouteCollection $routeCollection): void

Установить RouteCollection внутри Router

Параметры

Cake\Routing\RouteCollection $routeCollection

коллекция маршрутов

Возвращает

void

unwrapShortString() protected static

unwrapShortString(array $url): array

Вставить значения по умолчанию для маршрута из ключа _path

Параметры

array $url

Массив маршрутов с ключом _path

Возвращает

array

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

Spec-Zone.ru

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