Я много использовал маршруты в ZF, но не в реализации Rest, подробно описав документы и учебник, на который вы ссылались - я сделаю все возможное, чтобы помочь вам ...
Возможно, стоит взглянуть на документы для Rest router (примерно на 1/3 вниз по странице) - это объясняет, что он автоматически создаст для вас маршруты на основе метода запроса; поэтому формат именования createevent , geteventdetails и т. д. не требуется.
Вопрос 1.
Вместо создания файла
\ апи \ Application \ Контроллеры \ GeteventdetailsController.php
Я бы создал файл
\ апи \ Application \ Контроллеры \ EventsController.php
Это будет один контроллер, который будет обрабатывать все действия события, будь то получение, публикация, размещение и т. Д. Ваше предложение слишком специфично для контроллера, так как получение, размещение и т. Д. Будут обрабатываться на уровне действия.
Вопрос 2.
Маршруты, описанные в документации, показывают, что последний параметр (: id) будет назначен параметру в контроллере, который называется id
.
Таким образом, доступ к URL / events / с использованием GET вызовет indexAction()
в вашем EventsController.php
файле
И доступ к URL / events / 99 / с использованием GET вызовет getAction()
в вашем файле EventsController.php
. Вы можете получить доступ к этому идентификатору из контроллера, как это
$id = $this->getRequest()->getParam("id");
OR
$id = $this->getRequest()->id;
Затем вы должны написать код для запроса базы данных для получения списка событий или для конкретного идентификатора. Что приводит нас к ...
Вопрос 3.
Вместо того, чтобы помещать код для запроса базы данных о событиях в контроллер, вы должны создать модели для таблиц и строк базы данных. Я бы порекомендовал использовать существующие настройки в ZF для Zend_Db_Row и Zend_Tb_Table , чтобы сделать это. Это гарантирует, что ваше приложение / веб-сайт MVC.
Помещение кода в контроллер может помешать разработке позже, например, когда вы пишете регистрационную форму для события на более позднем этапе в другом контроллере. Логика создания события будет продублирована, один раз в новом контроллере и один раз в контроллере отдыха. Вам лучше было бы централизовать эту логику в модель для манипулирования событиями и их запроса.
Надеюсь, это поможет!