Класс RouteBuilder
Предоставляет возможности для создания маршрутов внутри областей.
Обеспечивает удобный способ создания маршрутов и их добавления в коллекцию маршрутов.
Краткое описание констант
-
string'[0-9]+' -
string'[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}'
Краткое описание свойств
-
$_collectionprotectedКоллекция маршрутов, в которую следует добавлять новые маршруты.Cake\Routing\RouteCollection -
$_extensionsprotectedРасширения, которые должны быть установлены для подключённых маршрутов.array -
$_namePrefixprotectedПрефикс имени для подключённых маршрутов.string -
$_paramsprotectedПараметры области, если таковые имеются.array -
$_pathprotectedПрефикс пути области, используемый этой коллекцией.string - Карта соответствия метода HTTP по умолчанию => действию контроллера.
array -
$_routeClassprotectedКласс маршрута по умолчанию, используемый, если в опциях connect() не указан другой.string
Краткое описание методов
- __construct() publicКонструктор
- _makeRoute() protectedСоздать объект маршрута или вернуть предоставленный объект.
- addExtensions() publicДобавить дополнительные расширения к уже имеющимся в текущей области
- connect() publicПодключает новый маршрут.
- extensions() publicПолучить или установить расширения в области данного билдера маршрутов.
- fallbacks() publicПодключает
/:controllerи/:controller/:action/*обратные маршруты. - nameExists() publicПроверяет, существует ли маршрут с данным именем.
- namePrefix() publicПолучить/установить префикс имени для данной области.
- params() publicПолучить имена/значения параметров для данной области.
- path() publicПолучить путь для данной области.
- plugin() publicДобавить маршруты плагинов.
- prefix() publicДобавить маршруты с префиксом.
- redirect() publicПодключает новый перенаправляющий маршрут в маршрутизатор.
- resources() publicГенерировать маршруты REST-ресурсов для заданных контроллеров.
- routeClass() publicПолучить или установить класс маршрута по умолчанию.
- scope() publicСоздать новую область маршрутизации.
Подробное описание методов
__construct()source public
__construct( Cake\Routing\RouteCollection $collection , string $path , array $params [] , array $options [] )
Конструктор
Параметры
-
routeClass- Класс маршрута по умолчанию, используемый при добавлении маршрутов. -
extensions- Расширения для подключения при добавлении маршрутов. -
namePrefix- Префикс, добавляемый к именам всех маршрутов.
Параметры
- Cake\Routing\RouteCollection
$collection - Коллекция маршрутов, в которую следует добавлять маршруты.
- string
$path - Префикс пути области.
- array
$paramsoptional [] - Параметры маршрутизации области.
- array
$optionsoptional [] - Список опций.
_makeRoute()source protected
_makeRoute( string|Cake\Routing\Route\Route $route , array $defaults , array $options )
Создать объект маршрута или вернуть предоставленный объект.
Параметры
- string|
Cake\Routing\Route\Route$route - Шаблон маршрута или объект маршрута.
- array
$defaults - Параметры по умолчанию.
- array
$options - Дополнительные параметры опций.
Возвращает
Cake\Routing\Route\RouteИсключения
InvalidArgumentExceptionкогда класс маршрута или объект маршрута неверны.
BadMethodCallException
когда создаваемый маршрут конфликтует с текущей областью
addExtensions()source public
addExtensions( string|array $extensions )
Добавить дополнительные расширения к уже имеющимся в текущей области
Параметры
- string|array
$extensions - Одно или несколько расширений для добавления
connect()source public
connect( string $route , array $defaults [] , array $options [] )
Подключает новый маршрут.
Маршруты — способ подключения URL запросов к объектам вашего приложения. В основе маршрутов лежит набор регулярных выражений, используемых для сопоставления запросов с пунктами назначения.
Примеры:
$routes->connect('/:controller/:action/*'); Первый параметр будет использоваться как имя контроллера, а второй — как имя действия. Синтаксис «/*» делает этот маршрут жадным, так что он будет соответствовать запросам, таким как /posts/index, а также запросам, таким как /posts/edit/1/foo/bar.
$routes->connect('/home-page', ['controller' => 'Pages', 'action' => 'display', 'home']); Выше показано использование значений параметров маршрута по умолчанию. А также предоставление параметров маршрутизации для статического маршрута.
$routes->connect(
'/:lang/:controller/:action/:id',
[],
['id' => '[0-9]+', 'lang' => '[a-z]{3}']
); Показано подключение маршрута с пользовательскими параметрами маршрута, а также предоставление шаблонов для этих параметров. Шаблоны для параметров маршрутизации не нуждаются в группах захвата, поскольку для каждого параметра маршрута будет добавлена одна группа.
$options предлагает несколько «специальных» ключей, имеющих специальное значение в массиве $options.
-
passиспользуется для определения, какие из параметров маршрута должны быть перенесены в массив переданных параметров. Добавление параметра в переданные параметры удалит его из обычного массива параметров маршрута. Пример:'pass' => ['slug']. -
routeClassиспользуется для расширения и изменения того, как отдельные маршруты анализируют запросы и обрабатывают обратный маршрут, с помощью настраиваемого класса маршрутизации. Пример:'routeClass' => 'SlugRoute' -
persistиспользуется для определения, какие параметры маршрута должны автоматически включаться при генерации новых URL. Вы можете переопределить постоянные параметры, переопределяя их в URL, или удалить их, установив параметр вfalse. Пример:'persist' => ['lang'] -
multibytePatternУстанавливается в true для включения поддержки многобайтовых шаблонов в шаблонах параметров маршрута. -
_nameиспользуется для определения конкретного имени маршрутов. Это может использоваться для оптимизации обратного поиска по маршрутам. Если не определено, для каждого подключенного маршрута будет сгенерировано имя. -
_ext— массив расширений файлов, которые будут извлечены из URL, если они присутствуют. См. ScopedRouteCollection::extensions(). -
_methodСопоставлять запросы только с определёнными HTTP-методами.
Пример использования условия _method:
$routes->connect('/tasks', ['controller' => 'Tasks', 'action' => 'index', '_method' => 'GET']); Вышеуказанный маршрут будет сопоставляться только для запросов GET. Запросы POST не будут соответствовать этому маршруту.
Параметры
- string
$route - Строка, описывающая шаблон маршрута
- array
$defaultsoptional [] Массив, описывающий параметры маршрута по умолчанию. Эти параметры используются по умолчанию и могут предоставлять параметры маршрутизации, которые не являются динамическими. См. выше.
- array
$optionsoptional [] Массив, соответствующий именованным элементам в маршруте регулярным выражениям, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как перенос параметров маршрута в переданные аргументы, предоставление шаблонов для параметров маршрута и предоставление имени настраиваемого класса маршрутизации.
Исключения
InvalidArgumentExceptionBadMethodCallException
extensions()source public
extensions( null|string|array $extensions null )
Получение или установка расширений в области действия этого билдера маршрутов.
Будущие маршруты, подключенные через этот билдер, получат применённые расширения. Однако, установка расширений не изменяет существующие маршруты.
Параметры
- null|string|array
$extensionsнеобязательно null - Расширения для использования или null.
Возвращаемые значения
array|nullfallbacks()source public
fallbacks( string|null $routeClass null )
Подключение маршрутов по умолчанию (fallback) для /:controller и /:controller/:action/*.
Это метод-короткая запись для подключения маршрутов по умолчанию в заданном объеме.
Параметры
- string|null
$routeClassнеобязательно null Класс маршрута для использования. Если не указано, используется по умолчанию routeClass.
nameExists()source public
nameExists( string $name )
Проверка наличия маршрута с заданным именем.
Параметры
- string
$name - Имя.
Возвращаемые значения
booleannamePrefix()source public
namePrefix( string|null $value null )
Получение/установка префикса имени для этого объема.
Изменение префикса имени повлияет только на префикс, используемый для маршрутов, подключенных после изменения префикса.
Параметры
- string|null
$valueнеобязательно null - Значение для установки или null.
Возвращаемые значения
stringplugin()source public
plugin( string $name , array|callable $options [] , callable|null $callback null )
Добавление маршрутов плагина.
Этот метод создаёт новую область маршрутов, включающую информацию о плагинах.
Имя плагина будет преобразованно в нижний регистр и с дефисами, чтобы создать путь маршрута. Если вам нужен пользовательский путь, используйте опцию path.
Маршруты, подключенные в области, будут иметь правильный префикс пути и соответствующий ключ маршрута плагина.
Параметры
- string
$name - Название плагина, для которого создавать маршруты
- array|callable
$optionsнеобязательно [] - Опции для использования или обратный вызов.
- callable|null
$callbackнеобязательно null Обратный вызов, который строит маршруты плагина. Требуется только когда $options определены.
prefix()source public
prefix( string $name , callable $callback )
Добавление маршрутов с префиксом.
Этот метод создаёт область маршрутов, которая включает релевантную информацию о префиксе.
Параметр пути используется для генерации имени параметра маршрута. Например, путь admin приведет к применению 'prefix' => 'admin' ко всем подключенным маршрутам.
Вы можете повторно открыть префикс столько раз, сколько нужно, а также вложенные префиксы. Вложенные префиксы приведут к значениям префиксов, таким как admin/api, что переводится в пространство имён Controller\Admin\Api\.
Параметры
- string
$name - Имя префикса для использования.
- callable
$callback - Обратный вызов, который строит маршруты с префиксом.
redirect()source public
redirect( string $route , array $url , array $options [] )
Подключает новый маршрут перенаправления в маршрутизатор.
Маршруты перенаправления отличаются от обычных маршрутов тем, что они выполняют фактическое перенаправление заголовка, если найдено совпадение. Перенаправление может происходить внутри приложения или перенаправляться на внешний сайт.
Примеры:
$routes->redirect('/home/*', ['controller' => 'posts', 'action' => 'view']); Перенаправляет /home/* на /posts/view и передаёт параметры в /posts/view. Использование массива в качестве пункта назначения перенаправления позволяет использовать другие маршруты для определения, куда должна быть перенаправлена строка URL.
$routes->redirect('/posts/*', 'http://google.com', ['status' => 302]); Перенаправляет /posts/* на http://google.com со статусом HTTP 302
Опции:
-
statusУстанавливает код HTTP-статуса (по умолчанию 301) -
persistПередаёт параметры перенаправленному маршруту, если это возможно. Это полезно для жадных маршрутов, маршруты, заканчивающиеся на*, являются жадными. Вы можете переназначить URL и не потерять переданные аргументы.
Параметры
- string
$route - Строка, описывающая шаблон маршрута
- array
$url - URL для перенаправления. Может быть строкой или URL на основе массива Cake.
- array
$optionsнеобязательно [] Массив, соответствующий именованным элементам в маршруте, регулярным выражениям, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как маршрутизированные параметры, которые должны быть перемещены в переданные аргументы. А также предоставление шаблонов для маршрутизированных параметров.
resources()source public
resources( string $name , array|callable $options [] , callable|null $callback null )
Генерация маршрутов REST-ресурсов для заданного(ых) контроллера(ов).
Быстрый способ сгенерировать маршруты по умолчанию для набора REST-ресурсов (контроллера(ов)).
Использование
Подключение маршрутов ресурсов для контроллера приложения:
$routes->resources('Posts'); Подключение маршрутов ресурсов для контроллера Comments в плагине Comments:
Router::plugin('Comments', function ($routes) {
$routes->resources('Comments');
}); Плагины создают маршруты ресурсов в нижнем регистре с символом подчеркивания. Например /comments/comments
Подключение маршрутов ресурсов для контроллера Articles в префиксе Admin:
Router::prefix('admin', function ($routes) {
$routes->resources('Articles');
}); Префиксы создают маршруты ресурсов в нижнем регистре с символом подчеркивания. Например /admin/posts
Вы можете создавать вложенные ресурсы, передавая обратный вызов:
$routes->resources('Articles', function ($routes) {
$routes->resources('Comments');
}); Выше показано, как создать маршруты ресурсов для /articles, и /articles/:article_id/comments. Можно использовать опцию map, чтобы подключить дополнительные методы ресурсов:
$routes->resources('Articles', [
'map' => ['deleteAll' => ['action' => 'deleteAll', 'method' => 'DELETE']]
]); В дополнение к маршрутам по умолчанию, это также подключит маршрут для /articles/delete_all. По умолчанию сегмент пути будет соответствовать имени ключа. Вы можете использовать ключ 'path' внутри определения ресурса для настройки имени пути.
Вы можете использовать опцию inflect, чтобы изменить способ генерации сегментов пути:
$routes->resources('PaymentTypes', ['inflect' => 'dasherize']); Сгенерирует маршруты, такие как /payment-types, вместо /payment_types.
Опции:
- 'id' - фрагмент регулярного выражения для сопоставления идентификаторов. По умолчанию соответствует целочисленным значениям и UUID.
- 'inflect' - выбор метода инфлексии, используемого для имени ресурса. По умолчанию 'underscore'.
- 'only' - подключение только указанных действий.
- 'actions' - перезапись имён методов, используемых для подключения действий.
- 'map' - дополнительные маршруты ресурсов, которые должны быть подключены. Если вы определили 'only' и 'map', убедитесь, что ваши сопоставленные методы также находятся в списке 'only'.
- 'prefix' - определение префикса маршрута для контроллера ресурса. Если текущая область определяет префикс, этот префикс будет добавлен к нему.
- 'connectOptions' – настраиваемые опции для подключения маршрутов.
Параметры
- string
$name - Имя контроллера для подключения маршрутов ресурсов.
- array|callable
$optionsнеобязательно [] - Опции для использования при генерации маршрутов REST-ресурсов или обратный вызов.
- callable|null
$callbackнеобязательно null Необязательный обратный вызов, который будет выполнен во вложенной области действия. Вложенные области действия наследуют существующий путь и параметр 'id'.
routeClass()source public
routeClass( string|null $routeClass null )
Получение или установка класса маршрута по умолчанию.
Параметры
- string|null
$routeClassнеобязательно null - Имя класса.
Возвращаемые значения
string|nullscope()source public
scope( string $path , array|callable $params , callable|null $callback null )
Создать новый область маршрутизации.
Области, созданные с помощью этого метода, будут унаследовать свойства области, к которой они добавлены. Это означает, что и текущий путь, и параметры будут добавлены к предоставленным параметрам.
Параметры
- строка
$path - Путь для создания области.
- массив|вызываемый
$params - Либо параметры для добавления к маршрутам, либо обратный вызов.
- вызываемый|null
$callbackнеобязательно null Обратный вызов для вызова, который строит маршруты плагина. Требуется только при наличии параметра $params.
Исключения
InvalidArgumentExceptionесли параметр не является обратным вызовом.
Подробное описание свойств
$_collectionsource
protected Cake\Routing\RouteCollection
Коллекция маршрутов, к которой должны быть добавлены маршруты.
$_extensionssource
protected массив
Расширения, которые должны быть установлены в подключенные маршруты.
[]
$_resourceMapsource
protected static массив
Отображение по умолчанию HTTP-метода => действия контроллера.
[
'index' => ['action' => 'index', 'method' => 'GET', 'path' => ''],
'create' => ['action' => 'add', 'method' => 'POST', 'path' => ''],
'view' => ['action' => 'view', 'method' => 'GET', 'path' => ':id'],
'update' => ['action' => 'edit', 'method' => ['PUT', 'PATCH'], 'path' => ':id'],
'delete' => ['action' => 'delete', 'method' => 'DELETE', 'path' => ':id'],
] $_routeClasssource
protected строка
Класс маршрута по умолчанию, который следует использовать, если он не указан в параметрах connect().
'Cake\Routing\Route\Route'
© 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.RouteBuilder.html