У меня проблема с маршрутизацией в унаследованном приложении Zend, которое я унаследовал — интересно, кто-нибудь может помочь мне отладить?
Пока я проверил:
application.config.php — модули загружены правильно:
'modules' => array(
'App',
'Finding',
'Listing',
и так далее
module.config.php и маршрут, кажется, подходят для пути, например:
'listing' => array(
'type' => 'segment',
'options' => array(
'route' => '/admin/property/listing[/:action[/:id]][/:component/:optionTitle/:optionValue]',
'constraints' => array(
'action' => '[a-z0-9_-]*',
'id' => '[0-9]+',
'component' => '[a-z0-9_-]*',
'optionTitle' => '[a-z0-9_-]*',
'optionValue' => '[a-z0-9_-]*'
),
'defaults' => array(
'controller' => 'Admin\Controller\Listing',
'action' => 'list',
),
),
),
Фактическое сообщение об ошибке, которое я получаю:
The requested URL could not be matched by routing. No Exception available
То, что я делаю, находится в зоне входа пользователя в систему, щелкает по категории списка, которая загружается нормально, а затем отправляет форму POST, которая обновляет определенные атрибуты в БД, связанные с этим идентификатором.
Однако при отправке я получаю вышеупомянутое сообщение, есть ли другие способы отследить это, если это не проблема маршрута?
РЕДАКТИРОВАТЬ
Комментарии не очень хороши для отладочных материалов, поэтому я добавлю их здесь, как и просили:
Опубликовать массив данных:
[listingId] => 121 [colvalues] => Array ( [0] => 11 [1] => 22 [2] => 33 [3] => 44 [4] => 55 [5] => 66 [6] => 77 [7] => 88 )
Индивидуальная структура URL
admin/property/listing/view/11111
Он отправляет НАЗАД на тот же URL — так:
admin/property/listing/view
Маршрут имеет дополнительный id
параметр
/admin/property/listing[/:action[/:id]]
Вы не публикуете id
параметр, а точнее listingId
,
мой угадать (а) являются:
Здесь нет viewAction
в Admin\Controller\Listing
,
Есть логика контроллера, которая специально проверяет id
параметр и, если не указано, возвращает ответ с 404
код состояния.
Я думаю, что причина в том, что даже при id
параметр отсутствует в вашем маршруте (admin/property/listing/view
) маршрутизатор должен по-прежнему соответствовать действию контроллера (как id
является необязательный параметр).
Других решений пока нет …