В Zend Framework 2 Я пытаюсь перенаправить несколько динамических URL-адресов указанным действиям в контроллер, который расширяет AbstractRestfulController
на основе типа запроса. Проблема заключается в том, то AbstractRestfulController
сохраняет перекрывая эти маршруты к действиям по умолчанию get()
, getList()
и т.д.ZF2 Маршрут на основе метода при расширении AbstractRestfulController
Мои маршруты:
GET /my-endpoint/{other_id} - allAction()
POST /my-endpoint/{other_id} - createAction()
GET /my-endpoint/{other_id}/{id} - getAction()
PUT /my-endpoint/{other_id}/{id} - updateAction()
DELETE /my-endpoint/{other_id}/{id} - deleteAction()
Мой конфигурации маршрутизатора является:
'my-endpoint' => [
'type' => 'segment',
'options' => [
'route' => 'my-endpoint/:other_id',
'constraints' => [
'other_id' => '[0-9]+',
],
'defaults' => [
'controller' => 'my-endpoint',
],
],
'may_terminate' => true,
'child_routes' => [
'get' => [
'type' => 'method',
'options' => [
'verb' => 'get',
'defaults' => [
'action' => 'all',
],
],
],
'post' => [
'type' => 'method',
'options' => [
'verb' => 'post',
'defaults' => [
'action' => 'create',
],
],
],
'single' => [
'type' => 'segment',
'options' => [
'route' => '[/:id]',
'constraints' => [
'id' => '[0-9]+',
],
],
'may_terminate' => true,
'child_routes' => [
'get' => [
'type' => 'method',
'options' => [
'verb' => 'get',
'defaults' => [
'action' => 'get',
],
],
],
'update' => [
'type' => 'method',
'options' => [
'verb' => 'put',
'defaults' => [
'action' => 'update',
],
],
],
'delete' => [
'type' => 'method',
'options' => [
'verb' => 'delete',
'defaults' => [
'action' => 'delete',
],
],
],
],
],
],
],
И мой контроллер имеет следующие действия:
public function allAction() {
die('allAction');
}
public function createAction() {
die('createAction');
}
public function getAction() {
die('getAction');
}
public function updateAction() {
die('updateAction');
}
public function deleteAction() {
die('deleteAction');
}
Как я могу маршрутизировать именно этот путь, чтобы никакие другие типы запросов не разрешались для этого контроллера/переопределения маршрутов по умолчанию AbstractRestfulController
?
Кроме того, я хотел бы продолжить расширение этого контроллера, потому что на самом деле я расширяю более общий контроллер, который расширяет этот Zend.
Почему бы не использовать [ZF2 'AbstractActionController'] (https://github.com/zendframework/zend-mvc/blob/master/src/Controller/AbstractActionController.php) для этого? – Wilt
@ Если вы прочитали мое последнее предложение, у меня есть базовый контроллер, который расширяет его от контроллера Zends. Я могу сделать более утонченную маршрутизацию внутри контроллеров, но было бы более чистым и приятным сделать это правильно – shiznatix
Прости, я не пропустил эту важную часть. Я попытаюсь придумать полезный ответ. – Wilt