Ist es im ZF2-Routing möglich, eine generische Elternroute zu haben, die allen öffentlichen Aktionen entspricht, aber bestimmte Bereiche mit einer benutzerdefinierten untergeordneten Route und Controller überschreibt?ZF2 verwendet untergeordnete Route, wenn Kind und Eltern übereinstimmen
Was ich will:
/parent => matches parent controller
/parent/edit => matches parent controller editAction
/parent/childsection => matches child controller
/parent/childsection/edit => matches child controller editAction
Ich konnte nicht mit jeder Konfiguration kommen, die meinen Bedürfnissen entspricht. Nach der Konfiguration würde ich denken, würde funktionieren - aber ZF2 Routen endet auf der übergeordneten Route Ursache childsection
könnte auch eine Aktion sein.
'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',
),
),
),
),
),
Das einzige, was arbeitete, war eine minimal Eltern wörtliche Route und 2 Kind Routen - 1 generic und 1 spezifisch für das Kind Abschnitt. Aber in diesem Fall muss ich URLs umleiten oder generieren mit ->toRoute('parent/default'...)
Gibt es eine andere elegante Lösung oder ist das einfach nicht möglich?
Könnten Sie erklären, warum genau Sie Leute sagen, dies zu tun? Ich mag diese Ausdrücke, weil es mir viel Schreibarbeit erspart, wenn ich neue Aktionen hinzufügen möchte. Und wenn ich eine öffentliche Methode hinzufüge, die mit "... Action" endet, möchte ich, dass sie automatisch zugreifbar ist, ohne sich in die Konfiguration einarbeiten zu müssen. Aber danke für den Kommentar, könnte dies eine Alternative zu meinem derzeitigen Ansatz sein. –