一条路线上有多个控制器

尼尔·汤森(Neil Townsend)

假设我有一个相当标准的路由定义,例如针对用户的东西:

'router' => array(
    'routes' => array(
         'user' => array(
            'type' => 'Zend\Mvc\Router\Http\Segment',
            'options' => array(
                'route'    => '/user[/:action]',
                'constraints' => array('action' => '[a-zA-Z0-9_-]*'),
                'defaults' => array(
                    'controller' => 'usercontroller',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

现在,假设我想对“用户”操作的不同组使用不同的控制器。例如,说一个或两个动作(例如“特殊”和“超级”)应该交给“特殊控制器”。我该如何配置?我尝试使用'child_routes'无济于事,并且尝试在'routes'数组中包含多个'user'条目,但没有任何乐趣。

诺诺·赫伦

您可以创建一个带有子路由类型segment的路由类型文字:

'router' => array(
    'routes' => array(
        'user' => array(
            'type' => 'Literal',
            'options' => array(
                'route' => '/user',
                'defaults' => array(
                    '__NAMESPACE__' => 'MyModule\Controller',
                    'controller'    => 'User',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' => '/[:controller[/:action[/:id]]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'id'         => '[0-9]+', 
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ),
    ),
),

或者,如果愿意,可以直接在路由类型网段中将控制器名称声明为路由参数:

'router' => array(
    'routes' => array(
        'user' => array(
            'type' => 'Segment',
            'options' => array(
                'route' => '/[:controller[/:action[/:id]]]',
                'defaults' => array(
                    '__NAMESPACE__' => 'MyModule\Controller',
                    'controller'    => 'User',
                    'action'        => 'index',
                ),
            ),
        ),
    ),
),

我更喜欢第一种避免模块控制器之间路由冲突的方法

如果您对应用程序的特定部分(此处为:用户)具有多个控制器,并且在同一模块中控制了应用程序的多个部分=>将控制器组织在不同的名称空间中,例如:

namespace MyModule\Controller\Users;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一条路线上有多个控制器

来自分类Dev

一条路线中的多个控制器

来自分类Dev

AngularJS-触发控制器时获取上一条路线

来自分类Dev

Laravel 5.3从控制器方法重定向到另一条路线

来自分类Dev

一条线上有多个答案

来自分类Dev

一条线上有多个答案

来自分类Dev

用瓶子在一条路线上处理多个帖子

来自分类Dev

将开放模式作为另一条路线上的一条单独路线

来自分类Dev

有没有一种方法可以仅在一条路线上安装Phoenix插头?

来自分类Dev

emberjs对一条路线使用多个路径/ URL

来自分类Dev

流星铁路由器。一条路线,多个模板。如何?

来自分类Dev

我想为将有多个转弯的方向绘制一条路线

来自分类Dev

Laravel 5委托一条路由-根据角色加载不同的控制器

来自分类Dev

Laravel语言翻译不在第一条路线上加载

来自分类Dev

不能在同一条路线上使用两种或多种方法

来自分类Dev

一条路线的gzip响应

来自分类Dev

Talend ESB:如何从另一条路线呼叫一条路线?

来自分类Dev

从另一条路线到一条路线的快速调用GET方法

来自分类Dev

阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

来自分类Dev

在本地Laravel站点上,只有一条路线不返回任何内容,在本地站点上有效

来自分类Dev

苗条的框架-保护除一条路线外的所有路线

来自分类Dev

角度路线就像没有网址更改的另一条路线

来自分类Dev

Bootstrap 3.3.7 - 在另一条路线上运行功能时在按钮中加载 gif

来自分类Dev

当用户在 Vue 和 Vuex 中从第一条路线到第二条路线和第二条路线到第一条路线时,想要在第一条路线上运行功能

来自分类Dev

使用Ember.js在一条路线中进行多步骤表单(或多个“页面”)

来自分类Dev

如何在一条路线中处理多个响应?

来自分类Dev

使用Ember.js的一条路线中的多步骤表单(或多个“页面”)

来自分类Dev

您如何在铁路由器中转到上一条路线?

来自分类Dev

铁路由器仅适用于一条路线

Related 相关文章

  1. 1

    一条路线上有多个控制器

  2. 2

    一条路线中的多个控制器

  3. 3

    AngularJS-触发控制器时获取上一条路线

  4. 4

    Laravel 5.3从控制器方法重定向到另一条路线

  5. 5

    一条线上有多个答案

  6. 6

    一条线上有多个答案

  7. 7

    用瓶子在一条路线上处理多个帖子

  8. 8

    将开放模式作为另一条路线上的一条单独路线

  9. 9

    有没有一种方法可以仅在一条路线上安装Phoenix插头?

  10. 10

    emberjs对一条路线使用多个路径/ URL

  11. 11

    流星铁路由器。一条路线,多个模板。如何?

  12. 12

    我想为将有多个转弯的方向绘制一条路线

  13. 13

    Laravel 5委托一条路由-根据角色加载不同的控制器

  14. 14

    Laravel语言翻译不在第一条路线上加载

  15. 15

    不能在同一条路线上使用两种或多种方法

  16. 16

    一条路线的gzip响应

  17. 17

    Talend ESB:如何从另一条路线呼叫一条路线?

  18. 18

    从另一条路线到一条路线的快速调用GET方法

  19. 19

    阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

  20. 20

    在本地Laravel站点上,只有一条路线不返回任何内容,在本地站点上有效

  21. 21

    苗条的框架-保护除一条路线外的所有路线

  22. 22

    角度路线就像没有网址更改的另一条路线

  23. 23

    Bootstrap 3.3.7 - 在另一条路线上运行功能时在按钮中加载 gif

  24. 24

    当用户在 Vue 和 Vuex 中从第一条路线到第二条路线和第二条路线到第一条路线时,想要在第一条路线上运行功能

  25. 25

    使用Ember.js在一条路线中进行多步骤表单(或多个“页面”)

  26. 26

    如何在一条路线中处理多个响应?

  27. 27

    使用Ember.js的一条路线中的多步骤表单(或多个“页面”)

  28. 28

    您如何在铁路由器中转到上一条路线?

  29. 29

    铁路由器仅适用于一条路线

热门标签

归档