2013-09-17 3 views
0

Я в настоящее время маршрут Zend Framework, определенный как таковой не совпадают другой маршрут, который использует слова в том же месте без два противоречащих друг другу что-то вроде:Zend Regex маршрутизатор ничего

brand/:brand_name/series/:series_name/:page 

я вычислял я вмешается вместе с примерами в документации ZF here. Самый первый шаг должен был бы изменить маршрут, чтобы что-то вроде этого:

$route = new Zend_Controller_Router_Route_Regex('brand/:brand_name/series/(\d+)', 
               array('controller' => 'brand', 
                'action' => 'series')); 

Однако это небольшое изменение приводит к маршрутам, которые соответствовали совершенно перед, как /brand/johnnycupcakes/series/2 на провал, говорит мне Action "johnnycupcakes" does not exist and was not trapped in __call(). И в трассировке стека я вижу:

'controller' => 'brand', 
'action' => 'johnnycupcakes', 
'series' => '2', 
'module' => 'default' 

В самом деле, даже если я оставить маршрут и по умолчанию параметры точно такие же, как и в первом примере, и просто изменить класс к Router_Route_Regex, я получаю ту же ошибку.

Я знаю, что ошибка не является конфликтом маршрутизации, потому что я не добавил маршрут, который бы противоречил. Кроме того, похоже, что он пытается соответствовать стандартным маршрутам. Я тестирую это на версии 1.11, поэтому моя версия должна быть полностью совместима с кодом в примере.

Насколько я могу судить, маршрут регулярного выражения просто не подходит, несмотря на то, что он очень четко подходит. Почему это может быть неудачно?

EDIT: Я опустил addRoute из вопроса в первый раз. У меня всегда было это в коде, это не проблема.

ответ

0

Что вам нужно назвать захваченное числовой параметр, добавив третий аргумент Zend_Controller_Router_Route_Regex:

$route = new Zend_Controller_Router_Route_Regex(
    'brand/:brand_name/series/(\d+)', 
    array(
     'controller' => 'brand', 
     'action' => 'series' 
    ), 
    array(
     1 => 'series', // name the parameter captured by (\d+) 
    ) 
); 

Второй массив может иметь ключи и значения в обратном отношении 'series' => 1, и она будет работать. Проверьте больше в руководстве ZF на regex routes

+0

Я пробовал это, и это не имеет значения. Точка именования параметров заключается в том, чтобы облегчить их работу, но не имеет значения, не совпадает ли маршрут с таковым. Отображение из трассировки стека показывает, что маршрут даже не сопоставляется, и он пытается применить стандартную маршрутизацию к моему URL-адресу. – jaimerump

+0

@jaimerump Вы действительно связали маршрут с маршрутизатором? –

+0

Да, следующая строка - addRoute. Я отредактирую вопрос, чтобы показать, что я включил его. – jaimerump

Смежные вопросы