Я пишу несколько маршрутов для службы REST. Один из URI моего ресурса выглядит так
ресурсы/пользователь/:id
Я также хочу дать доступ к отдельным атрибутам пользователя, которые будут выглядеть так
ресурсы/пользователь/:id/:атрибут
Но когда я пытаюсь определить этот последний маршрут, он не работает. Вот мой ini, где определены маршруты
routes.user.route = "resources/user/:id"
routes.user.defaults.controller = user
routes.user.defaults.action = get
routes.user.defaults.id = 0
routes.user.reqs.id = "\d+"
routes.user_attribute.route = "resources/user/:id/:attribute/"
routes.user_attribute.defaults.controller = user
routes.user_attribute.defaults.action = getAttribute
routes.user_attribute.defaults.id = 0
routes.user_attribute.defaults.attribute = ""
routes.user_attribute.reqs.id = "\d+"
routes.user_attribute.reqs.id = "reviews|lists"
Когда я пытаюсь получить доступ к ресурсам/пользователь/4/отзывы в своем браузере, я получаю следующий вывод
An error occurred
Page not found
Exception information:
Message: Invalid controller specified (resources)
Stack trace:
#0 /usr/local/lib/ZendFramework/ZendFramework-1.7.1-minimal/library/Zend/Controller/Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /home/baileyp/public_html/web/index.php(50): Zend_Controller_Front->dispatch()
#2 {main}
Request Parameters:
array(4) {
["controller"]=>
string(9) "resources"
["action"]=>
string(4) "user"
[10]=>
string(7) "reviews"
["module"]=>
string(7) "default"
}
Таким образом, мой второй маршрут явно неправильно обрабатывается, так как он определяет контроллер как «ресурсы», а действие — как «пользователь». Что я здесь делаю неправильно? На сайте Zend я не нашел примеров, иллюстрирующих, как это реализовать.
И я не хочу использовать модули только для того, чтобы сделать это - избегание создания папок и тому подобного только для сопоставления с URI - это вся цель системы маршрутизации.