ZF2 fromRoute не возвращает имя действия по умолчанию

Я собираюсь создать такую ​​ссылку:

somesite.com/management/users/index/delete/10

в котором управление — это имя модуля, пользователи — это контроллер, индекс — это имя действия, а delete — это параметр, который получает идентификатор записи.
Для создания этой ссылки я использую эту часть кода:

        $delUrl = $this->url()->fromRoute('management-users', array(
'controller' => 'users',
'action' => 'index',
'delete' => $siteData['id'],
));

Мой конфиг, как показано ниже:

    'router' => array(
'routes' => array(
'management-index' => array(
'type'    => 'segment',
'options' => array(
'route'    => '/management[/:controller][/:action][/delete/:delete][/:id]',
'constraints' => array(
'delete'    => '[0-9]+' ,
'id'    => '[0-9]+'
),
'defaults' => array(
'__NAMESPACE__' => 'Management\Controller',
'controller'    => 'Index',
'action'        => 'index'
),
),
),

),
),

Результат таков:

somesite.com/management/users/delete/10

Функция пропускает имя действия, потому что это моё действие по умолчанию, а затем удаляется как имя действия, и я наконец получаю ошибку 404. Как видите, у меня есть параметр «id», который не позволяет мне пропустить фразу «delete» из ссылки. Опуская «удалить» из URL, ZF2 получает ввод как «id», а не «delete». Я не могу изменить свое действие по умолчанию.
Есть ли способ сказать ZF2 для ввода имени действия в URL?

1

Решение

Переименуйте ключ маршрута из «management-index» в «management-users». Измените имя контроллера с «Index» на «Users», чтобы маршрут выглядел следующим образом:

'router' => array(
'routes' => array(
'management-users' => array(
'type'    => 'segment',
'options' => array(
'route'    => '/management[/:controller][/:action][/delete/:delete][/:id]',
'constraints' => array(
'delete'    => '[0-9]+' ,
'id'    => '[0-9]+'
),
'defaults' => array(
'__NAMESPACE__' => 'Management\Controller',
'controller'    => 'Users',
'action'        => 'index'
),
),
),

),
),

Не забудьте изменить определение вашего контроллера (invocable или factory), чтобы отразить это изменение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]