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 プラグインに到達する前にリクエストを変更したいと思います。