在Zend Framework中嵌套控制器

时间:2012-11-20 12:27:09

标签: php zend-framework zend-framework-mvc

我正在构建一个Zend Framework应用程序,并创建了一些与数据库表相对应的控制器,并保存了对这些表执行CRUD操作的方法。

我刚刚开始研究Companies控制器,该控制器包含添加,编辑和删除公司的方法。为此,我们可以使用传统的controller/action网址格式:

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

问题在于,对于每个Company,我们还需要管理其ContactsMachines

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

我无法理解如何在Zend Framework中管理它。我应该通过路由“嵌套”控制器,还是应该使用模块?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

您可以轻松编写自定义路由来处理此问题。例如,这个:

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 

这会将网址指向machines控制器并将companyname设置为GET-var。

您可以轻松地将其更改为适合您喜欢的任何形式。

答案 1 :(得分:1)

使用 zend 框架默认路由器,您的网址无效。 这个链接必须有效:

 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