Spec-Zone.ru › CakePHP 2.7

Класс Router

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

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

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

Именованные параметры

Именованные параметры позволяют встраивать пары ключ:значение в сегменты пути. Это позволяет создавать структуры хешей, используя URL. Вы можете определить, как работают именованные параметры в вашем приложении, используя Router::connectNamed()

Пакет: Cake\Маршрутизация
Авторское право: Авторское право (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Расположено в Cake/Routing/Router.php

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

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

_handleNoRoute( array $url )

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

Параметры

массив $url
URL, который не соответствовал ни одному маршруту

Возвращает

string
Сгенерированный URL для массива

См. также

Router::url()

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

_loadRoutes( )

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

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

_parseExtension( string $url )

Извлекает расширение файла из URL, если Router::parseExtensions() включен.

Параметры

строка $url
URL.

Возвращает

array
Возвращает массив, содержащий измененный URL и извлеченное расширение.

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

_setPrefixes( )

Устанавливает префиксы маршрутизации.

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

_validateRouteClass( string $routeClass )

Проверяет, существует ли переданный класс маршрута и является ли он подклассом CakeRoute

Параметры

строка $routeClass
Имя класса маршрута

Возвращает

string
строка

Вызывает

RouterException
RouterException

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
Массив маршрутов

Вызывает

RouterException
RouterException

См. также

Router::$routes
parse().

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
Соответствующий объект маршрута.
END_OF_DOCUMENT_MARKER

defaultRouteClasssource public static

defaultRouteClass( string $routeClass null )

Установить или вернуть текущий класс маршрута по умолчанию

Параметры

строка $routeClass необязательно null
Класс маршрута, который нужно установить по умолчанию.

Возвращает

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

Выбрасывает

RouterException
RouterException

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

getParamsource 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|null
Null, если стек пуст.

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::$_namedConfig

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

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
Список префиксов, используемых в связанных маршрутах
END_OF_DOCUMENT_MARKER

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::$routes

reloadsource public static

reload( )

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

requestRoutesource public static

requestRoute( )

Возвращает маршрут, соответствующий текущему URL-адресу запроса.

Возвращает

CakeRoute
Объект соответствующего маршрута.

resourceMapsource public static

resourceMap( array $resourceMap null )

Получение и установка карты ресурсов.

Параметры

массив $resourceMap необязательно null
Карта ресурсов

Возвращает

mixed
смешанный тип

См. также

Router::$_resourceMap

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

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

$_currentRoutesource

protected static массив

Маршрут, соответствующий URL текущего запроса

array()

$_fullBaseUrlsource

protected static строка

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

$_initialStatesource

protected static массив

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

array()

$_namedConfigsource

protected static строка

Хранит всю информацию, необходимую для определения того, какие именованные аргументы анализируются при каких условиях.

array(
    'default' => array('page', 'fields', 'order', 'limit', 'recursive', 'sort', 'direction', 'step'),
    'greedyNamed' => true,
    'separator' => ':',
    'rules' => false,
)

$_namedExpressionssource

protected static массив

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

array(
    'Action' => Router::ACTION,
    'Year' => Router::YEAR,
    'Month' => Router::MONTH,
    'Day' => Router::DAY,
    'ID' => Router::ID,
    'UUID' => Router::UUID
)

$_parseExtensionssource

protected static boolean

Директива для Router, чтобы разобрать расширения файлов для сопоставления с типами содержимого.

false

$_prefixessource

protected static массив

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

array()

$_requestssource

protected static массив

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

array()

$_resourceMapsource

protected static массив

Схема по умолчанию HTTP-метод => действие контроллера.

array(
    array('action' => 'index', 'method' => 'GET', 'id' => false),
    array('action' => 'view', 'method' => 'GET', 'id' => true),
    array('action' => 'add', 'method' => 'POST', 'id' => false),
    array('action' => 'edit', 'method' => 'PUT', 'id' => true),
    array('action' => 'delete', 'method' => 'DELETE', 'id' => true),
    array('action' => 'edit', 'method' => 'POST', 'id' => true)
)

$_resourceMappedsource

protected static массив

Список контроллеров с сопоставленными ресурсами

array()

$_routeClasssource

protected static строка

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

'CakeRoute'

$_validExtensionssource

protected static массив

Список допустимых расширений для разбора из URL. Если null, разрешено любое расширение.

array()

$initializedsource

public static boolean

Маршруты загружены?

false

$routessource

public static массив

Массив маршрутов, подключённых с помощью Router::connect()

array()

© 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

Spec-Zone.ru

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