Zend 控制器操作中的可选参数



在我的管理模块中,在索引控制器中,我有多个过滤选项。过滤非常简单,基于参数,即:

http://www.site.com/admin/pages/by/date_added/order/asc  
-> This orders the pages by "date_added" ascending
http://www.site.com/admin/pages/status/published
-> This shows only the pages with status "published"
http://www.site.com/admin/pages/category/cars
-> This show only the pages under the "cars" category.

然后在我的应用程序引导程序中,我构建了如下路由:

$route = new Zend_Controller_Router_Route_Regex("^admin/pages/status/([a-z,_]+)$", 
    array(
       "module" => "admin",
       "controller" => "pages",
       "action" => "index"
    ),
    array(
       1 => 'by',
       2 => 'order',
    )
);
$router->addRoute("admin/pages/order", $route); 

问题是我不知道如何组合所有这些参数,但也不知道如何使它们可选。例如,我不想有这样的链接:

http://www.site.com/admin/pages/by/date_added/order/asc/category/cars

或。。。

http://www.site.com/admin/pages/category/cars/status/published

试试这个:

$route = new Zend_Controller_Router_Route("admin/pages/*", 
    array(
       "module" => "admin",
       "controller" => "pages",
       "action" => "index"
    )
);
$router->addRoute("admin/pages/order", $route); 

*让它将变量匹配为key/value对。因此,您的示例 URL http://www.example.com/admin/pages/by/date_added/order/asc/category/cars 应该匹配,并且路由参数将byordercategory 与 URL 中的值一起使用。(可通过控制器访问。 $this->_getParam('order')等等。

最新更新