Вложенные контроллеры в Zend Framework

Я создаю приложение Zend Framework и создал несколько контроллеров, которые соответствуют таблицам базы данных и содержат методы для выполнения операций CRUD с этими таблицами.

Я только начал работать над контроллером Companies, который содержит методы добавления, редактирования и удаления компаний. Для этого мы можем использовать традиционный шаблон URL controller/action:

http://example.com/companies/add
http://example.com/companies/edit/some-company

Проблема в том, что для каждого Company нам также нужно управлять его Contacts и Machines:

http://example.com/companies/some-company/machines/add
http://example.com/companies/another-company/contacts/edit/some-contact

Я просто не могу понять, как управлять этим в Zend Framework. Должен ли я «вкладывать» контроллеры через маршрутизацию или использовать модули? Любая помощь будет очень высоко ценится.


person Freek Vanraes    schedule 20.11.2012    source источник


Ответы (2)


Вы можете легко написать собственные маршруты, чтобы справиться с этим. Например, это:

http://example.com/companies/some-company/machines/add

станет в вашем .ini файле:

routes.machine.route = "companies/:companyname/machines/:action"
routes.machine.defaults.controller = machines
routes.machine.defaults.action = index 

Это укажет URL-адрес на контроллер machines и установит companyname как GET-var.

Вы можете легко изменить это в соответствии с любой формой, которая вам нравится.

person Config    schedule 20.11.2012

с маршрутизатором по умолчанию zend framework ваш URL-адрес не работает. эти ссылки должны работать:

 http://example.com/companies/add
 http://example.com/companies/edit/id/some-company
 http://example.com/companies/addmachines/id/some-company//
 http://example.com/companies/contacts/mod/edit/companyid/another-company/

формат:

http://yoursite.com/Module(if available)/Controller/Action/param1/val1/param2/val2/?param3=val3
person Nasser G.    schedule 20.11.2012
comment
Как вы это описываете, вы не создаете контроллер contacts или machines? Я хотел бы поддерживать некоторую иерархию в URL-адресах, поэтому желательна форма http://example.com/companies/id/some-company/machines/add или http://example.com/companies/id/some-company/machines/edit/id/some-machine. Это возможно? - person Freek Vanraes; 20.11.2012