1

ZF3 では、ルートからデフォルト パラメータを取得したいと考えています。コントローラーでこの方法でパラメーターを取得しています:

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

私のURLは次のようになります:

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',
                        ],
                    ],
                ],
            ],
            ],
4

1 に答える 1

2

ルート定義では、crudパラメーターがオプションであることをルーターに伝えていません。したがって、 を呼び出したときに選択される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',
        ],
    ],
],
于 2016-12-08T19:20:08.107 に答える