【问题标题】:Nesting controllers in Zend FrameworkZend 框架中的嵌套控制器
【发布时间】:2012-11-20 12:27:08
【问题描述】:

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

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

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 中管理它。我应该通过路由“嵌套”控制器,还是应该使用模块?任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    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。

    您可以轻松更改它以适合您喜欢的任何形式。

    【讨论】:

      【解决方案2】:

      使用 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
      

      【讨论】:

      • 按照你描述的方式,你不是创建contactsmachines 控制器吗?我想在 URL 中维护某种层次结构,因此需要 http://example.com/companies/id/some-company/machines/addhttp://example.com/companies/id/some-company/machines/edit/id/some-machine 形式。这可能吗?
      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多