在ZF3中没有获取默认路由参数

时间:2016-12-07 19:53:45

标签: php parameters default zend-route zend-framework3

在ZF3中我想从路由获取默认参数。我在控制器中以这种方式获取参数:

$params = $this->params()->fromRoute('crud');

我的网址看起来像这样:

1: somedomain/admin/color/add
2: somedomain/admin/color

1)我在add变量中得到 $params
在2)我得到 null ,但我期待默认(在这种情况下 view

我认为这是路由器配置错误的问题。

'admin' => [
            'type' => Segment::class,
            'options' => [
                'route' => '/admin/:action',
                'defaults' => [
                    'controller' => Controller\AdminController::class,
                    'action' => 'index',
                ],
            ],
            'may_terminate' => true,
            'child_routes' => [
                'color' => [
                    'type' => Segment::class,
                    'options' => [
                        'route' => '/:crud',
                        'constraints' => [
                            'crud' => 'add|edit|delete|view',
                        ],
                        'defaults' => [
                            'controller' => Controller\AdminController::class,
                            'crud' => 'view',
                        ],
                    ],
                ],
            ],
            ],

1 个答案:

答案 0 :(得分:2)

在路由定义中,您没有说路由器crud参数是optionnal。因此,当您致电somedomain/admin/color时,会选择路线/admin/:action

要指定可选参数,请使用括号表示法(假设您使用相同的操作):

'admin' => [
    'type' => Segment::class,
    'options' => [
        'route' => '/admin/:action[/:crud]',
        'defaults' => [
            'controller' => Controller\AdminController::class,
            'action' => 'index',
            'crud' => 'view',
        ],
        'constraints' => [
            'crud' => 'add|edit|delete|view',
        ],
    ],
],