如何构造Zend_Controller_Router_Route以处理相同位置的动作和param键?

时间:2010-07-15 01:57:17

标签: zend-acl zend-controller-router

这是我在JSON中的路线:

"jobs":
{
    "type":"Zend_Controller_Router_Route",
    "route":"/jobs/:action/:id/*",
    "defaults":
    {
     "module":"api",
     "controller":"jobs",
     "action":"index",
     "id":0
    }
}

这允许像下面这样的URI,到目前为止效果非常好:

/jobs/ -> action=index, id=0
/jobs/view/1 -> action=view, id=1
/jobs/edit/1 -> action=edit, id=1

但是,我希望:action 位置也允许使用以下URI:

/jobs/type/volunteer -> action=index, type=volunteer
/jobs/search/php%20developer -> action=index, search=php developer

到目前为止,我正在 App_Controller_Action :: __ call()中完成此操作。它有效,但它很混乱,因为在调度请求之前,操作在技术上仍然被列为“搜索”或“术语”,并且这些键的值被分配给id。

这导致我的Zend_Acl检查中的问题我在前端控制器插件中执行。作为一种解决方法,我添加了“搜索”和“类型”作为我的ACL的权限,但同样,这是凌乱的。 ACL应保持对这些语义的清除。我喜欢在之前修改请求到达ACL插件。

0 个答案:

没有答案