ZF2路由中是否可以使用通用父路由,匹配所有公共操作,但是使用自定義子路由和控制器覆蓋特定區域?如果孩子和父母匹配,ZF2使用子路由
我想要什麼:
/parent => matches parent controller
/parent/edit => matches parent controller editAction
/parent/childsection => matches child controller
/parent/childsection/edit => matches child controller editAction
我無法想出一個適合我的需要任意配置。按照配置,我認爲會工作 - 但ZF2路線終止於父母的路線因爲childsection
也可能是一個行動。
'parent' => array(
'type' => 'Segment',
'may_terminate' => true,
'options' => array(
'route' => '/parent[[/:action][/:id]]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Application\Controller\Parent',
'action' => 'index',
),
),
'child_routes' => array(
'child' => array(
'type' => 'Segment',
'options' => array(
'route' => '/childsection/:action[/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Application\Controller\Child',
),
),
),
),
),
唯一有效的工作是一個最小的父母文字路由和2個子路由 - 1個子節的通用和1特定。但在這種情況下,我必須重定向或生成url使用->toRoute('parent/default'...)
是否有任何其他優雅的解決方案,或者這是不可能的?
你能解釋爲什麼你告訴人們這麼做嗎? 我喜歡這些表達式,因爲如果我想添加新的動作,可以節省很多打字時間。如果我添加一個以'... Action'結尾的公共方法,我希望它可以自動訪問而不必深入配置。 但是,感謝評論,這可能是我目前的做法的替代方案。 –