Класс RouteBuilder
Предоставляет возможности для создания маршрутов внутри областей.
Предоставляет простой способ создания маршрутов и добавления их в коллекцию маршрутов.
Подробное описание методов
__constructsource 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 [] - Список параметров.
_makeRoutesource 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\Cake\Routing\Route\Route
Выбрасывает
InvalidArgumentExceptionпри некорректном классе или объекте маршрута.
BadMethodCallExceptionпри конфликте создаваемого маршрута с текущей областью
addExtensionssource public
addExtensions( string|array $extensions )
Добавляет дополнительные расширения к тем, которые уже есть в текущей области
Параметры
- string|array
$extensions - Одно или несколько расширений для добавления
connectsource 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. Добавление параметра для передачи удалит его из обычного массива маршрутов. Пример:'pass' => ['slug']. -
routeClassиспользуется для расширения и изменения того, как отдельные маршруты анализируют запросы и обрабатывают обратную маршрутизацию с помощью пользовательского класса маршрутизации. Пример:'routeClass' => 'SlugRoute' -
persistиспользуется для определения, какие параметры маршрута должны быть автоматически включены при генерации новых URL-адресов. Можно переопределить постоянные параметры, повторно определив их в URL-адресе, или удалить их, установив параметр вfalse. Пример:'persist' => ['lang'] -
_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 [] - Массив, сопоставляющий именованные элементы в маршруте с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрута, которые следует перенести в переданные аргументы, предоставление шаблонов для параметров маршрутизации и предоставление имени пользовательского класса маршрутизации.
Выбрасывает
InvalidArgumentException\InvalidArgumentException
BadMethodCallException\BadMethodCallException
extensionssource public
extensions( null|string|array $extensions null )
Получение или установка расширений в области данного билдера маршрутов.
Будущие маршруты, подключенные через этого билдера, будут иметь применённые расширения. Однако установка расширений не изменяет существующие маршруты.
Параметры
- null|string|array
$extensionsoptional null - Расширения для использования или null.
Возвращает
array|nullarray|null
fallbackssource public
fallbacks( string|null $routeClass null )
Подключает маршруты по умолчанию /:controller и /:controller/:action/*.
Это метод-короткая запись для подключения маршрутов по умолчанию в заданной области.
Параметры
- string|null
$routeClassoptional null - класс маршрута для использования, если не указан, используется класс маршрута по умолчанию
namePrefixsource public
namePrefix( string|null $value null )
Получение/установка префикса имени для этой области.
Изменение префикса имени повлияет только на префикс, используемый для маршрутов, подключенных после изменения префикса.
Параметры
- string|null
$valueoptional null - Значение для установки или null.
Возвращает
stringstring
paramssource public
params( )
Получить имена/значения параметров для этой области.
Возвращает
stringstring
pluginsource public
plugin( string $name , array|callable $options [] , callable|null $callback null )
Добавить маршруты плагина.
Этот метод создает новую область коллекции маршрутов, которая включает информацию о соответствующем плагине.
Имя плагина будет преобразовываться в нижний регистр с символом подчёркивания для создания пути маршрутизации. Если нужно пользовательское имя пути, используйте параметр path.
Маршруты, подключенные в области коллекции, будут иметь соответствующий префикс пути, а также будет установлен соответствующий ключ маршрутизации плагина.
Параметры
- string
$name - Имя плагина для создания маршрутов
- array|callable
$optionsoptional [] - Используемые параметры или обратный вызов
- callable|null
$callbackoptional null - Обратный вызов для вызова, который создаёт маршруты плагина. Требуется только, когда $options определён.
prefixsource public
prefix( string $name , callable $callback )
Добавить маршруты с префиксом.
Этот метод создаёт коллекцию маршрутов с привязкой, которая включает соответствующую информацию о префиксе.
Параметр path используется для генерации имени параметра маршрутизации. Например, путь admin приведёт к применению параметра 'prefix' => 'admin' ко всем подключенным маршрутам.
Вы можете повторно открыть префикс столько раз, сколько необходимо, а также вкладывать префиксы. Вложенные префиксы приведут к значениям префиксов, таким как admin/api, что соответствует пространству имён Controller\Admin\Api\.
Параметры
- строка
$name - Имя префикса для использования.
- обратный вызов
$callback - Обратный вызов для создания маршрутов с префиксом.
redirectsource 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-адреса и не потерять переданные аргументы.
Параметры
- строка
$route - Строка, описывающая шаблон маршрута
- массив
$url - URL для перенаправления. Может быть строкой или Cake-массивом URL
- массив
$optionsнеобязательно [] - Массив, сопоставляющий именованные элементы маршрута с регулярными выражениями, которым должен соответствовать этот элемент. Также содержит дополнительные параметры, такие как параметры маршрутизации, которые должны быть перемещены в переданные аргументы, а также шаблоны для параметров маршрутизации.
resourcessource 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' в определении ресурса для настройки имени пути.
Параметры:
- 'id' - Фрагмент регулярного выражения для использования при сопоставлении идентификаторов. По умолчанию соответствует целым числам и UUID.
- 'inflect' - Выберите метод склонения, используемый для имени ресурса. По умолчанию 'underscore'.
- 'only' - Подключить только указанный список действий.
- 'actions' - Переопределить имена методов, используемых для подключения действий.
- 'map' - Дополнительные маршруты ресурсов, которые следует подключить. Если вы определены 'only' и 'map', убедитесь, что ваши сопоставленные методы также находятся в списке 'only'.
Параметры
- строка
$name - Имя контроллера для подключения маршрутов ресурсов.
- массив|обратный вызов
$optionsнеобязательно [] - Параметры для использования при генерации маршрутов REST или обратный вызов.
- обратный вызов|null
$callbackнеобязательно null - Необязательный обратный вызов, который будет выполнен во вложенном контексте. Вложенные контексты наследуют существующий путь и параметр 'id'.
routeClasssource public
routeClass( string|null $routeClass null )
Получить или установить стандартный класс маршрута.
Параметры
- строка|null
$routeClassнеобязательно null - Имя класса.
Возвращает
string|nullстрока|null
scopesource public
scope( string $path , array|callable $params , callable|null $callback null )
Создать новый контекст маршрутизации.
Контексты, созданные этим методом, будут наследовать свойства контекста, к которому они добавлены. Это означает, что как текущий путь, так и параметры будут добавлены к переданным параметрам.
Параметры
- строка
$path - Путь для создания контекста.
- массив|обратный вызов
$params - Либо параметры для добавления к маршрутам, либо обратный вызов.
- обратный вызов|null
$callbackнеобязательно null - Обратный вызов для создания маршрутов плагина. Требуется только если $params определён.
Исключения
InvalidArgumentExceptionпри отсутствии параметра обратного вызова.
Сводка констант
string | ID Регулярное выражение для идентификаторов с автоматической привязкой | '[0-9]+' |
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}' |
Сводка свойств
© 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/3.1/class-Cake.Routing.RouteBuilder.html