Spec-Zone.ru › CakePHP 3.3

Класс Router

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

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

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

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

Краткое описание констант

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

    YEAR
    '[12][0-9]{3}'

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

  • $_collection protected static
    Cake\Routing\RouteCollection
    Коллекция маршрутов, к которой будут добавлены маршруты.
  • $_defaultExtensions protected static
    array
    Определённые по умолчанию расширения с помощью Router::extensions()
  • $_defaultRouteClass protected static
    boolean
    Класс маршрута по умолчанию.
  • $_fullBaseUrl protected static
    string

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

  • $_initialState protected static
    array

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

  • $_namedExpressions protected static
    array
    Имена выражений
  • $_requestContext protected static
    array
    Хэш данных контекста запроса.
  • $_requests protected static
    array

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

  • $_urlFilters protected static
    array

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

  • $initialized public static
    boolean
    Были загружены маршруты

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

  • _applyUrlFilters() protected static
    Применяет все подключенные фильтры URL к URL.
  • _loadRoutes() protected static
    Загружает конфигурацию маршрутов
  • addUrlFilter() public static
    Добавить фильтр URL в Router.
  • connect() public static
    Подключает новый маршрут в роутер.
  • defaultRouteClass() public static
    Получить или установить класс маршрута по умолчанию.
  • extensions() public static
    Получить или установить допустимые расширения для всех позже подключенных маршрутов.
  • fullBaseUrl() public static

    Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полных URL-адресов для этого приложения. Если параметры не переданы, возвращается текущее значение конфигурации.

  • getNamedExpressions() public static
    Получает имена шаблонов маршрутов для использования в config/routes.php
  • getRequest() public static
    Получить текущий объект запроса или первый из них.
  • mapResources() public static
    Генерировать маршруты REST-ресурсов для заданного(ых) контроллера(ов).
  • normalize() public static
    Нормализует URL для целей сравнения.
  • parse() public static
    Разбирает заданную строку URL. Возвращает параметры 'routing' для этого URL.
  • parseNamedParams() public static
    Обеспечивает поддержку старой версии именованных параметров во входящих URL.
  • plugin() public static
    Добавить маршруты плагина.
  • popRequest() public static
    Извлекает запрос из стека запросов. Используется при выполнении requestAction
  • prefix() public static
    Создать маршруты с префиксом.
  • pushRequest() public static

    Добавить запрос в стек запросов. Добавление запроса устанавливает контекст запроса, используемый при генерации URL.

  • redirect() public static
    Подключает новый перенаправляющий маршрут в роутер.
  • reload() public static

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

  • reverse() public static
    Преобразует массив параметров в строку.
  • routes() public static
    Получить области видимости маршрутов и их подключенные маршруты.
  • scope() public static
    Создать область видимости маршрутизации.
  • setRequestContext() public static
    Сохранить контекст запроса для данного запроса.
  • setRequestInfo() public static

    Получает информацию о параметрах и пути от диспетчера, устанавливает эти параметры как текущие параметры запроса, которые объединяются с массивами URL, созданными позже в запросе.

  • url() public static
    Находит URL для указанного действия.

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

_applyUrlFilters()source protected static

_applyUrlFilters( array $url )

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

Параметры

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

Возвращает

массив
Изменённый URL.

См. также

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

_loadRoutes()source protected static

_loadRoutes( )

Загрузка конфигурации маршрутов

addUrlFilter()source public static

addUrlFilter( callable $function )

Добавление фильтра URL в маршрутизатор.

Функции фильтров 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;
});

Параметры

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

connect()source public static

connect( string $route , array $defaults [] , array $options [] )

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

Провайдер совместимости для \Cake\Routing\RouteBuilder::connect() в / области видимости.

Параметры

строка $route
Строка, описывающая шаблон маршрута
массив $defaults необязательно []

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

массив $options необязательно []

Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрутизации, которые должны быть перемещены в переданные аргументы, шаблоны для параметров маршрутизации и имя пользовательского класса маршрутизации.

Исключения

Cake\Core\Exception\Exception

См. также

\Cake\Routing\RouteBuilder::connect()
\Cake\Routing\Router::scope()

defaultRouteClass()source public static

defaultRouteClass( string|null $routeClass null )

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

Параметры

строка|null $routeClass необязательно null
Имя класса.

Возвращает

строка|null

extensions()source public static

extensions( array|string|null $extensions null , boolean $merge true )

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

Инструктирует маршрутизатор извлекать расширения файлов из URL. Например, http://example.com/posts.rss даст расширение файла "rss". Само расширение файла доступно в контроллере как $this->request->params['_ext'], и используется компонентом RequestHandler для автоматического переключения на альтернативные макеты и шаблоны, а также для загрузки помощников, соответствующих заданному содержимому, например, RssHelper. Для переключения макетов и помощников необходимо, чтобы выбранное расширение имело определенный MIME-тип в Cake\Network\Response.

В этот метод можно передать строку или массив допустимых расширений. Если метод вызывается без параметров, он вернет текущий список установленных расширений.

Параметры

массив|строка|null $extensions необязательно null
Список расширений, которые нужно добавить.
логическое значение $merge необязательно true

Флаг, указывающий, нужно ли объединить или переопределить существующие расширения. По умолчанию значение true.

Возвращает

массив
Массив расширений, с которыми настроен маршрутизатор.

fullBaseUrl()source public static

fullBaseUrl( string|null $base null )

Устанавливает полный базовый URL, который будет использоваться в качестве префикса для генерации полностью квалифицированных URL для этого приложения. Если параметры не переданы, возвращается текущее значение конфигурации.

Примечание:

Если вы изменяете значение конфигурации App.fullBaseUrl во время выполнения и ожидаете, что маршрутизатор сгенерирует ссылки, используя новое значение, вам необходимо снова вызвать этот метод, передав это значение.

Параметры

строка|null $base необязательно null

Префикс для URL, генерируемых и содержащих домен. Например: http://example.com

Возвращает

строка

getNamedExpressions()source public static

getNamedExpressions( )

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

Возвращает

массив
Элементы именованных маршрутов

См. также

\Cake\Routing\Router::$_namedExpressions

getRequest()source public static

getRequest( boolean $current false )

Получение текущего объекта запроса или первого объекта.

Параметры

логическое значение $current необязательно false
Истина для получения текущего запроса, или ложь для получения первого запроса.

Возвращает

Cake\Network\Request|null

mapResources()source public static

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

Устарело

3.3.0 Используйте Router::scope() и RouteBuilder::resources() вместо этого.

Параметры

строка|массив $controller
Имя контроллера или массив имён контроллеров (например, "Posts" или "ListItems")
массив $options необязательно []
Опции для использования при генерации маршрутов REST

См. также

\Cake\Routing\RouteBuilder::resources()

normalize()source public static

normalize( array|string $url '/' )

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

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

Параметры

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

Возвращает

строка
Нормализованный URL

parse()source public static

parse( string $url , string $method '' )

Парсит заданную строку URL. Возвращает параметры 'routing' для этого URL.

Параметры

строка $url
URL для парсинга.
строка $method необязательно ''
Используемый HTTP-метод.

Возвращает

массив
Разбор элементов из URL.

Исключения

Cake\Routing\Exception\MissingRouteException
При невозможности обработки маршрута
END_OF_DOCUMENT_MARKER

parseNamedParams()source public static

parseNamedParams( Cake\Network\Request $request , array $options [] )

Предоставляет обратную совместимость для именованных параметров в входящих URL.

Проверяет переданные параметры на наличие элементов, содержащих $options['separator'] Эти параметры разбиваются и анализируются как именованные параметры старого стиля.

Проанализированные параметры будут перемещены из params['pass'] в params['named'].

Параметры

  • separator Строка, используемая в качестве разделителя. По умолчанию :.

Устарело

3.3.0 Обратная совместимость для именованных параметров будет удалена в версии 4.0.

Параметры

Cake\Network\Request $request
Объект запроса, который нужно изменить.
массив $options необязательно []
Массив опций.

Возвращает

Cake\Network\Request
Изменённый запрос

plugin()source public static

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

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

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

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

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

Параметры

строка $name
Имя плагина для создания маршрутов
массив|обратный вызов $options необязательно []
Опции или обратный вызов
обратный вызов|null $callback необязательно null

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

popRequest()source public static

popRequest( )

Извлекает запрос из стека запросов. Используется при вызове requestAction

Возвращает

Cake\Network\Request
Запрос, удалённый из стека.

См. также

\Cake\Routing\Router::pushRequest()
\Cake\Routing\RequestActionTrait::requestAction()

prefix()source public static

prefix( string $name , array|callable $params [] , callable|null $callback null )

Создать маршруты с префиксом.

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

Параметр пути используется для генерации имени параметра маршрутизации. Например, путь admin приведет к применению 'prefix' => 'admin' ко всем подключенным маршрутам.

Вы можете повторно открыть префикс столько раз, сколько необходимо, а также вкладывать префиксы. Вложенные префиксы приведут к значениям префикса, таким как admin/api , что соответствует пространству имён Controller\Admin\Api\.

Параметры

строка $name
Используемое имя префикса.
массив|обратный вызов $params необязательно []

Массив значений по умолчанию для маршрутизации, которые нужно добавить к каждому подключенному маршруту. Если параметров нет, этот аргумент может быть обратным вызовом.

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

pushRequest()source public static

pushRequest( Cake\Network\Request $request )

Добавить запрос в стек запросов. Добавление запроса устанавливает контекст запроса, используемый при генерации URL.

Параметры

Cake\Network\Request $request
Экземпляр запроса.

redirect()source public static

redirect( string $route , array $url , array $options [] )

Подключает новый перенаправляющий маршрут в маршрутизатор.

Провайдер совместимости для \Cake\Routing\RouteBuilder::redirect() в рамках /.

Устарело

3.3.0 Вместо этого используйте Router::scope() и RouteBuilder::redirect().

Параметры

строка $route
Строка, описывающая шаблон маршрута
массив $url
URL для перенаправления. Может быть строкой или URL Cake на основе массива
массив $options необязательно []

Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрутизации, которые должны быть перемещены в передаваемые аргументы, а также шаблоны для параметров маршрутизации.

См. также

\Cake\Routing\RouteBuilder::redirect()

reload()source public static

reload( )

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

reverse()source public static

reverse( Cake\Network\Request|array $params , boolean $full false )

Обратное преобразование массива параметров в строку.

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

Это приведет к удалению имён параметров 'autoRender', 'bare', 'requested' и 'return', так как они используются для внутренних функций CakePHP и обычно не должны быть частью выходного URL.

Параметры

Cake\Network\Request|массив $params

Массив params или объект Cake\Network\Request, который нужно преобразовать обратно.

логическое $full необязательно false

Установить в true, чтобы включить полный URL, включая протокол, при обратном преобразовании URL.

Возвращает

строка
Строковое представление результата обратного преобразования массива

routes()source public static

routes( )

Получить области маршрутизации и их подключенные маршруты.

Возвращает

массив

scope()source 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
При передаче недопустимого обратного вызова.

setRequestContext()source public static

setRequestContext( Cake\Network\Request|Psr\Http\Message\ServerRequestInterface $request )

Сохранить контекст запроса для данного запроса.

Параметры

Cake\Network\Request|Psr\Http\Message\ServerRequestInterface $request
Экземпляр запроса.

Вызывает исключение

InvalidArgumentException
При передаче параметра неверного типа.

setRequestInfo()source public static

setRequestInfo( Cake\Network\Request|array $request )

Принимает информацию о параметрах и путях от диспетчера, устанавливает эти параметры как текущие параметры запроса, которые объединяются с массивами URL, создаваемыми позже в запросе.

Вложенные запросы создадут стек запросов. Вы можете удалить запросы с помощью Router::popRequest(). Это делается автоматически при использовании Object::requestAction().

Принимает объект Cake\Network\Request или массив массивов. Поддержка принятия массивов может быть удалена в будущем.

Параметры

Cake\Network\Request|массив $request
Информация о параметрах и путях или объект Cake\Network\Request.
END_OF_DOCUMENT_MARKER

url()source public static

url( string|array|null $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, к сгенерированным URL будет добавлен префикс результата Router::fullBaseUrl().
  • # - Позволяет установить фрагменты хэша URL.
  • _ssl - Установите в значение true для преобразования сгенерированного URL в https или false для принудительного использования http.
  • _name - Имя маршрута. Если вы настроили именованные маршруты, вы можете использовать этот ключ для его указания.

Параметры

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

Массив, определяющий следующие параметры: 'controller', 'action', 'plugin'. Кроме того, вы можете предоставить элементы маршрутизации или параметры строки запроса. Если строка, она может быть любой допустимой строкой URL.

boolean $full необязательно false

Если true, к результату будет добавлен полный базовый URL. По умолчанию false.

Возвращает

string
Полный переведенный URL с базовым путем.

Выбрасывает

Cake\Core\Exception\Exception
Когда имя маршрута не найдено

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

$_collectionsource

protected static Cake\Routing\RouteCollection

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

$_defaultExtensionssource

protected static array

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

[]

$_defaultRouteClasssource

protected static boolean

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

'Cake\Routing\Route\Route'

$_fullBaseUrlsource

protected static string

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

$_initialStatesource

protected static array

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

[]

$_namedExpressionssource

protected static array

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

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

$_requestContextsource

protected static array

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

[]

$_requestssource

protected static array

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

[]

$_urlFilterssource

protected static array

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

[]

$initializedsource

public static boolean

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

false

© 2005–2017 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/3.3/class-Cake.Routing.Router.html

Spec-Zone.ru

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