2009-05-27 2 views
0

Я использую маршрутизатор mod-rewrite.Добавление маршрута к маршрутизатору в Zend Framework

Я пытаюсь добавить маршрут к маршрутизатору, который будет конвертировать следующий URL:
BaseUrl/категорию/ааа/mycontroller/MyAction/пары/значения

быть:
Controller = mycontroller
действие = MyAction

--parameters--

категория = ааа
пары = значение

Я использую следующий (не работает) в моей начальной загрузке, _front является FrontController

$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

Я получаю ошибку является выброшенным исключением маршрутизатора, когда я использую помощник Zend_View :: URL() (с или без указания имени нового маршрута).
Исключение выбрасывается только в том случае, если у меня есть baseurl/category/....

Что мне не хватает?

То, что я пропустил:
Поскольку в URL-адресе была [категория], используемый маршрутизатор был указан выше.
Когда я использовал помощник url ​​(), я не дал никакого значения этому [category], поэтому для этого ключа в ошибке url parts-> не было значения. Предоставление значения по умолчанию делает работу.

ответ

6

Вы должны включать/* как предложено solomongaby.

Если не заданы все требуемые параметры (например, категория, контроллер и действие), вам необходимо указать значения по умолчанию.

Вы можете сделать это следующим образом:

$Router=$this->_front->getRouter(); 

$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*', 
    array(
     'controller' => 'index', 
     'action'  => 'index', 
     'category' => null 
    ) 
); 
$Router->addRoute('category', $CategoryRoute); 
2
$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

Попробуйте добавить отталкиваться, чтобы указать наличие дополнительной PARAMS

+0

Я получаю исключение Zend_Controller_Router_Exception, когда я пытаюсь использовать помощник url ​​(). –

+0

Пробовал отправлять имя маршрутизатора без изменений: $ this-> url (array ('controller' => 'test'), 'category', true); –

+0

Можете ли вы сказать мне об исключении? –

0

Вы должны указать значения по умолчанию при создании маршрута (см пост dcaunt), или указать все параметров в URL просмотра помощника (категория, контроллера и действие)