1

Zend フレームワーク 2 で子ルートをリダイレクトする際に問題が発生しました。コントローラーとアクションにアクセスできますが、リダイレクト中にパラメーター「id」が見つからないというエラーがスローされます。

  'admin' => array(
                    'type'    => 'segment',
                    'options' => array(
                        'route'    => '/admin[/][:action][/:id]',
                        'constraints' => array(
                            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'id'     => '[0-9]+',
                        ),
                        'defaults' => array(
                            'controller' => 'Admin\Controller\Admin',
                            'action'     => 'index',
                        ),
                    ),
                    'may_terminate' => true,
                     'child_routes' => array(
                        'settings' => array(
                            'type'    => 'Segment',
                            'may_terminate' => true,
                            'options' => array(
                                'route'    => '/general[/][:action][/][:id]',
                                'constraints' => array(
                                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                    'id'     => '[0-9]+',
                                ),
                                'defaults' => array(
                                    'controller' => 'Admin\Controller\Settings\General',
                                    'action'     => 'index',
                                ),
                            ),
                        ),
                    ),
                ),

以下のようなルートへのリダイレクトを指定しました。

return $this->redirect()->toRoute('admin/settings');

しかし、それはエラーをスローし、

Missing parameter "id" 
4

2 に答える 2

2

ルート マッチング メソッドは、ルートの親ノードを「消費」していないようです。

文法の/admin部分を含むように子ルートを変更する

/管理者/設定/一般[/][:アクション][/][:id]

また

/管理者/設定[/][:アクション][/][:id]

作業を許可$this->redirect()->toRoute('admin/settings');する必要があります。

于 2014-02-25T17:43:56.030 に答える