Как мне структурировать Zend_Controller_Router_Route для обработки действия и ключа param в одной и той же позиции? - PullRequest
2 голосов
/ 15 июля 2010

Вот мой маршрут в формате 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 () .Это работает, но это грязно, потому что, пока запрос не отправлен, действие технически все еще перечисляется как «поиск» или «термин», и значение, предназначенное для этих ключей, присваивается идентификатору.

Это вызывает проблему в моих проверках Zend_Acl, которые я выполняю в плагине фронт-контроллера.В качестве обходного пути я добавил «поиск» и «тип» в качестве разрешений для моего ACL, но опять же, это грязно.ACL должен оставаться чистым от этой семантики.Мне бы хотелось, чтобы запрос был изменен до , когда он попадает в плагин ACL.

...