这是我在 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 插件之前对其进行修改。