Класс 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 -
$middlewareprotectedarrayСписок middleware, которые добавляются к маршрутам в этом билдере во время создания.
Краткое описание методов
- __construct() publicКонструктор
- _makeRoute() protectedСоздает объект маршрута или возвращает предоставленный объект.
- _methodRoute() protectedПомощник для создания маршрутов, которые отвечают только одному методу HTTP.
- addExtensions() publicДобавляет дополнительные расширения к уже существующим в текущей области
- applyMiddleware() publicПрименение middleware к текущей области маршрута.
- connect() publicПодключает новый маршрут.
- delete() publicСоздает маршрут, который отвечает только на запросы DELETE.
- extensions() publicПолучение или установка расширений в области маршрутизатора.
- fallbacks() publicПодключение
/:controllerи/:controller/:action/*fallback маршрутов. - get() publicСоздает маршрут, который отвечает только на запросы GET.
- getExtensions() publicПолучение расширений в области маршрутизатора.
- getRouteClass() publicПолучение стандартного класса маршрута.
- head() publicСоздает маршрут, который отвечает только на запросы HEAD.
- loadPlugin() publicЗагрузка маршрутов из плагина.
- middlewareGroup() publicПрименение набора middleware к группе
- nameExists() publicПроверка наличия маршрута с заданным именем.
- namePrefix() publicПолучение/установка префикса имени для этой области.
- options() publicСоздает маршрут, который отвечает только на запросы OPTIONS.
- params() publicПолучение имен/значений параметров для этой области.
- patch() publicСоздает маршрут, который отвечает только на запросы PATCH.
- path() publicПолучение пути для этой области.
- plugin() publicДобавление маршрутов плагина.
- post() publicСоздает маршрут, который отвечает только на запросы POST.
- prefix() publicДобавление маршрутов с префиксом.
- put() publicСоздает маршрут, который отвечает только на запросы PUT.
- redirect() publicПодключает новый перенаправляющий маршрут в маршрутизатор.
- registerMiddleware() publicРегистрация middleware с RouteCollection.
- resources() publicГенерация маршрутов REST-ресурсов для заданного контроллера(ов).
- routeClass() publicПолучение или установка стандартного класса маршрута.
- scope() publicСоздание новой области маршрутизации.
- setExtensions() publicУстановка расширений в области маршрутизатора.
- setRouteClass() publicУстановка стандартного класса маршрута.
Подробное описание методов
__construct()source public
__construct( Cake\Routing\RouteCollection $collection , string $path , array $params [] , array $options [] )
Конструктор
Параметры
-
routeClass- Стандартный класс маршрута для использования при добавлении маршрутов. -
extensions- Расширения для подключения при добавлении маршрутов. -
namePrefix- Префикс, добавляемый к всем именам маршрутов. -
middleware- Имена middleware, которые должны быть применены к маршрутам.
Параметры
- 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
если создаваемый маршрут конфликтует с текущей областью
_methodRoute()source protected
_methodRoute( string $method , string $template , array $target , string $name )
Помощник для создания маршрутов, которые отвечают только одному HTTP-методу.
Параметры
- строка
$method - Имя HTTP-метода для сопоставления.
- строка
$template - Шаблон URL для использования.
- массив
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которым указывает данный маршрут.
- строка
$name - Имя маршрута.
Возвращает
Cake\Routing\Route\RouteaddExtensions()source public
addExtensions( string|array $extensions )
Добавить дополнительные расширения к уже имеющимся в текущем контексте
Параметры
- строка|массив
$extensions - Одно или несколько расширений для добавления
applyMiddleware()source public
applyMiddleware( ... $names )
Применить middleware к текущему маршруту.
Требуется, чтобы middleware был зарегистрирован через registerMiddleware()
Параметры
- ...
$names - $names Имена middleware, которые нужно применить к текущему контексту.
Возвращает
$this
См. также
\Cake\Routing\RouteCollection::addMiddlewareToScope()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.
-
routeClassиспользуется для расширения и изменения способа, которым отдельные маршруты анализируют запросы и обрабатывают обратную маршрутизацию, посредством пользовательского класса маршрутизации. Пример:'routeClass' => 'SlugRoute' -
passиспользуется для определения того, какие из параметров маршрута должны быть перемещены в массив pass. Добавление параметра в массив pass удалит его из обычного массива маршрута. Пример:'pass' => ['slug']. -
persistиспользуется для определения параметров маршрута, которые должны быть автоматически включены при генерации новых URL-адресов. Вы можете переопределить постоянные параметры, переопределяя их в URL-адресе, или удалить их, установив параметр в значениеfalse. Пример:'persist' => ['lang'] -
multibytePatternУстановите в значение true, чтобы включить поддержку многобайтовых шаблонов в шаблонах параметров маршрута. -
_nameиспользуется для определения конкретного имени для маршрутов. Это может использоваться для оптимизации обратных запросов к маршрутам. Если не определено, для каждого подключенного маршрута будет сгенерировано имя. -
_extпредставляет собой массив расширений файлов, которые будут извлечены из URL-адреса, если они присутствуют. См. \Cake\Routing\RouteCollection::setExtensions(). -
_methodСопоставлять только запросы со специфическими HTTP-глаголами.
Пример использования условия _method:
$routes->connect('/tasks', ['controller' => 'Tasks', 'action' => 'index', '_method' => 'GET']); Вышеприведенный маршрут будет соответствовать только запросам GET. Запросы POST не будут соответствовать этому маршруту.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$defaultsопционально [] Массив, описывающий параметры маршрута по умолчанию. Эти параметры будут использоваться по умолчанию и могут предоставить параметры маршрутизации, которые не являются динамическими. См. выше.
- массив
$optionsопционально [] Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрута, которые должны быть перемещены в переданные аргументы, предоставление шаблонов для параметров маршрута и предоставление имени пользовательского класса маршрутизации.
Возвращает
Cake\Routing\Route\RouteВыбрасывает
InvalidArgumentExceptionBadMethodCallException
delete()source public
delete( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы DELETE.
Параметры
- строка
$template - Шаблон URL для использования.
- массив
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которым указывает данный маршрут.
- строка
$nameопционально null - Имя маршрута.
Возвращает
Cake\Routing\Route\Routeextensions()source public
extensions( null|string|array $extensions null )
Получить или установить расширения в области действия этого билдера маршрутов.
Будущие маршруты, подключенные через этого билдера, будут иметь примененные расширения. Однако установка расширений не изменяет существующие маршруты.
Устарело
3.5.0 Используйте getExtensions/setExtensions вместо этого.Параметры
- null|строка|массив
$extensionsопционально null - Расширения для использования или null.
Возвращает
массив|nullfallbacks()source public
fallbacks( string|null $routeClass null )
Подключить /:controller и /:controller/:action/* резервные маршруты.
Это метод-короткая запись для подключения резервных маршрутов в данной области видимости.
Параметры
- строка|null
$routeClassопционально null класс маршрута для использования, если не указано, используется по умолчанию routeClass
get()source public
get( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы GET.
Параметры
- строка
$template - Шаблон URL для использования.
- массив
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает данный маршрут.
- строка
$nameопционально null - Имя маршрута.
Возвращает
Cake\Routing\Route\RoutegetExtensions()source public
getExtensions( )
Получить расширения в области действия этого билдера маршрутов.
Возвращает
массивgetRouteClass()source public
getRouteClass( )
Получить класс маршрута по умолчанию.
Возвращает
строкаhead()source public
head( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы HEAD.
Параметры
- строка
$template - Шаблон URL для использования.
- массив
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает данный маршрут.
- строка
$nameопционально null - Имя маршрута.
Возвращает
Cake\Routing\Route\RouteloadPlugin()source public
loadPlugin( string $name , string $file 'routes.php' )
Загрузить маршруты из плагина.
Файл маршрутов будет иметь локальную переменную с именем $routes, которая содержит текущий экземпляр RouteBuilder.
Параметры
- строка
$name - Имя плагина
- строка
$fileопционально 'routes.php' - Файл маршрутов для загрузки. По умолчанию
routes.php
Выбрасывает
Cake\Core\Exception\MissingPluginExceptionЕсли плагин не загружен.
InvalidArgumentException
Если плагин не имеет файла маршрутов.
middlewareGroup()source public
middlewareGroup( string $name , array $middlewareNames )
Применить набор middleware к группе
Параметры
- string
$name - Имя группы middleware
- array
$middlewareNames - Имена middleware
Возвращает
$this
nameExists()source public
nameExists( string $name )
Проверяет, существует ли маршрут с заданным именем.
Параметры
- string
$name - Имя.
Возвращает
booleannamePrefix()source public
namePrefix( string|null $value null )
Получить/установить префикс имени для этого области видимости.
Изменение префикса имени изменит только префикс, используемый для маршрутов, подключенных после изменения префикса.
Параметры
- string|null
$valueнеобязательно null - Значение для установки или null.
Возвращает
stringoptions()source public
options( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы OPTIONS.
Параметры
- string
$template - Шаблон URL, который нужно использовать.
- array
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает этот маршрут.
- string
$nameнеобязательно null - Имя маршрута.
Возвращает
Cake\Routing\Route\Routeparams()source public
params( )
Получить имена/значения параметров для этой области видимости.
Возвращает
arraypatch()source public
patch( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы PATCH.
Параметры
- string
$template - Шаблон URL, который нужно использовать.
- array
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает этот маршрут.
- string
$nameнеобязательно null - Имя маршрута.
Возвращает
Cake\Routing\Route\Routepath()source public
path( )
Получить путь, для которого предназначена эта область видимости.
Возвращает
stringplugin()source public
plugin( string $name , array|callable $options [] , callable|null $callback null )
Добавить маршруты плагина.
Этот метод создает новую область видимости коллекции маршрутов, которая включает соответствующую информацию о плагине.
Имя плагина будет склонено в нижний регистр, чтобы создать путь маршрутизации. Если вам нужен пользовательский путь, используйте опцию path.
Маршруты, подключенные в области видимости, будут иметь соответствующий префикс пути, и будет задан соответствующий ключ маршрутизации плагина.
Параметры
- string
$name - Имя плагина, для которого нужно создать маршруты
- array|callable
$optionsнеобязательно [] - Используемые опции или обратный вызов
- callable|null
$callbackнеобязательно null Обратный вызов, который вызывается для построения маршрутов плагина. Требуется только если $options определён.
post()source public
post( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы POST.
Параметры
- string
$template - Шаблон URL, который нужно использовать.
- array
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает этот маршрут.
- string
$nameнеобязательно null - Имя маршрута.
Возвращает
Cake\Routing\Route\Routeprefix()source public
prefix( string $name , array|callable $params [] , callable $callback null )
Добавить маршруты с префиксами.
Этот метод создает область видимости коллекции маршрутов, которая включает соответствующую информацию о префиксе.
Параметр $name используется для генерации имени параметра маршрутизации. Например, путь admin приведет к применению 'prefix' => 'admin' ко всем подключенным маршрутам.
Вы можете повторно открыть префикс столько раз, сколько необходимо, а также вложенные префиксы. Вложенные префиксы приведут к значениям префикса, таким как admin/api, что соответствует пространству имен Controller\Admin\Api\.
Если вам нужно иметь префикс с точками, например: '/api/v1.0', используйте ключ 'path' для аргумента $params:
$route->prefix('api', function($route) {
$route->prefix('v10', ['path' => '/v1.0'], function($route) {
// Translates to `Controller\Api\V10\` namespace
});
}); Параметры
- string
$name - Имя префикса, которое нужно использовать.
- array|callable
$paramsнеобязательно [] Массив значений по умолчанию для маршрутизации, которые нужно добавить к каждому подключенному маршруту. Если у вас нет параметров, этот аргумент может быть обратным вызовом.
- callable
$callbackнеобязательно null - Обратный вызов для построения маршрутов с префиксами.
Исключения
InvalidArgumentExceptionЕсли не передан допустимый обратный вызов
put()source public
put( string $template , array $target , string $name null )
Создать маршрут, который отвечает только на запросы PUT.
Параметры
- string
$template - Шаблон URL, который нужно использовать.
- array
$target Массив, описывающий параметры целевого маршрута. Эти параметры должны указывать плагин, префикс, контроллер и действие, к которому указывает этот маршрут.
- string
$nameнеобязательно null - Имя маршрута.
Возвращает
Cake\Routing\Route\Routeredirect()source public
redirect( string $route , array|string $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|string
$url - URL для перенаправления. Может быть строкой или Cake URL на основе массива
- array
$optionsнеобязательно [] Массив, сопоставляющий именованные элементы маршрута с регулярными выражениями, которым должен соответствовать элемент. Также содержит дополнительные параметры, такие как параметры маршрута, которые нужно перенести в переданные аргументы. А также предоставляет шаблоны для параметров маршрутизации.
registerMiddleware()source public
registerMiddleware( string $name , callable|string $middleware )
Зарегистрировать middleware в RouteCollection.
После регистрации middleware его можно применить к текущей области видимости маршрутизации или любой дочерней области видимости, которая использует ту же RouteCollection.
Параметры
- string
$name - Имя middleware. Используется при применении middleware к области видимости.
- callable|string
$middleware - Обратный вызов middleware или имя класса для регистрации.
Возвращает
$this
См. также
\Cake\Routing\RouteCollectionresources()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' - Настраиваемые опции для подключения маршрутов.
- 'path' - Изменить путь, чтобы он не соответствовал имени ресурса. Например, ArticlesController доступен по адресу
/posts
Параметры
- string
$name - Имя контроллера для подключения маршрутов ресурсов.
- array|callable
$optionsнеобязательно [] - Опции для использования при генерации маршрутов REST, или обратный вызов.
- callable|null
$callbackнеобязательно null Необязательный обратный вызов, который будет выполнен в вложенном контексте. Вложенные контексты наследуют существующий путь и параметр 'id'.
routeClass()source public
routeClass( string|null $routeClass null )
Получить или установить стандартный класс маршрута.
Устарело
3.5.0 Используйте getRouteClass/setRouteClass вместо этого.Параметры
- string|null
$routeClassнеобязательно null - Имя класса.
Возвращает
string|nullscope()source public
scope( string $path , array|callable $params , callable|null $callback null )
Создать новый контекст маршрутизации.
Созданные с помощью этого метода контексты будут наследовать свойства контекста, к которому они добавляются. Это означает, что и текущий путь, и параметры будут добавлены к предоставленным параметрам.
Параметры
- string
$path - Путь для создания контекста.
- array|callable
$params - Либо параметры для добавления к маршрутам, либо обратный вызов.
- callable|null
$callbackнеобязательно null Обратный вызов для вызова, который строит маршруты плагина. Требуется только при определении $params.
Исключения
InvalidArgumentExceptionесли нет параметра callable.
setExtensions()source public
setExtensions( string|array $extensions )
Установить расширения в области действия этого создателя маршрутов.
В дальнейшем подключаемые через этого создателя маршруты будут иметь примененные расширения. Однако установка расширений не изменяет существующие маршруты.
Параметры
- string|array
$extensions - Устанавливаемые расширения.
Возвращает
$this
setRouteClass()source public
setRouteClass( string $routeClass )
Установить стандартный класс маршрута.
Параметры
- string
$routeClass - Имя класса.
Возвращает
$this
Подробное описание свойств
$_collectionsource
protected Cake\Routing\RouteCollection
Коллекция маршрутов, к которой должны быть добавлены маршруты.
$_extensionssource
protected array
Расширения, которые должны быть установлены для подключенных маршрутов.
[]
$_resourceMapsource
protected static array
Стандартное отображение 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 string
Стандартный класс маршрута, используемый, если он не указан в опциях connect().
'Cake\Routing\Route\Route'
$middlewaresource
protected array
Список middleware, которые добавляются маршрутам в этом создателе при построении.
[]
© 2005–2018 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.5/class-Cake.Routing.RouteBuilder.html