2010-12-01 5 views
8

У меня есть следующий маршрут:Router_Route с дополнительными параметрами

 $gridRoute = new Zend_Controller_Router_Route(
     ':module/:controller/list/:order/:dir/:page', 
     array (
      'module' => 'default', 
      'controller' => 'index', 
      'order' => '', 
      'dir' => 'asc', 
      'page' => 1, 
      'action' => 'list' 
     ), 
     array (
      'page' => '\d+' 
     ) 
    ); 
    $router->addRoute('grid', $mainRoute->chain($gridRoute)); 

Я хотел бы иметь возможность добавить необязательный параметр «фильтр» для этого маршрута. Таким образом, я мог бы использовать следующий URL:

http://example.org/default/list/filter/all/lname/asc/1 или http://example.org/default/list/lname/asc/ или http://example.org/default/list/filter/all

Либо один должен работать. Я попытался поместить необязательный параметр в Маршрут, но это не сработало. Есть идеи?

ответ

12

Как правило, в Zend's Router, как и в PHP, необязательным параметром является параметр, который имеет значение по умолчанию. Добавьте один для параметра filter:

$gridRoute = new Zend_Controller_Router_Route(
    ':module/:controller/list/:order/:dir/:page/:filter', 
    array (
     'module' => 'default', 
     'controller' => 'index', 
     'order' => '', 
     'dir' => 'asc', 
     'page' => 1, 
     'action' => 'list', 
     'filter' => null, // define default for filter here 
    ), 
    array (
     'page' => '\d+' 
    ) 
); 
+1

Почему бы не просто опустить его? – 2010-12-01 17:02:06

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