0

子セグメントを持つルートを作成しようとしています 例: /account/:accountId/user/edit/:userId

Module.config.php:

'router' => array(
    'routes' => array(
         'account' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/account/:accountid',
                'constraints' => array(
                    'accountid' => '[a-z0-9_-]*',
                ),
                'defaults' => array(
                    'controller' => 'My\Controller\Account',
                    'action'     => 'index',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'user' => array(
                        'type' => 'segment',
                        'options' => array(
                            'route' => '/user/edit/:userid',
                            'constraints' => array(
                                'userid' => '[a-z0-9_-]*',
                            ),
                            'defaults' => array(
                                'action' => 'edit'
                            )
                        ),
                    )
                )
            ),
        ),

私が電話するとき:

<?= $this->url('account/user', ['accountid' => 'foo', 'userid' => 'bar']);

/account/foo/user/edit/bar が必要な /account/foo のみを取得します

may_terminate を変更せずに false に変更しようとしました

4

1 に答える 1

2

同じエラーを何度か自分で犯し、それを解決するのに膨大な時間を費やしました。

構成を注意深く見てください。may_terminate&child_routesはキー内optionsではなく、 と同じレベルにある必要がありますoptions。正しい設定が見えるはずです

'router' => array(
    'routes' => array(
         'account' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/account/:accountid',
                'constraints' => array(
                    'accountid' => '[a-z0-9_-]*',
                ),
                'defaults' => array(
                    'controller' => 'My\Controller\Account',
                    'action'     => 'index',
                ),
            ), // options
            'may_terminate' => true,
            'child_routes' => array(
                'user' => array(
                    'type' => 'segment',
                    'options' => array(
                        'route' => '/user/edit/:userid',
                        'constraints' => array(
                            'userid' => '[a-z0-9_-]*',
                        ),
                        'defaults' => array(
                            'action' => 'edit'
                        ),
                    ),
                ),
            ),
        ),
    ),
)
于 2013-03-08T08:12:49.390 に答える