2016-07-26 6 views
0

ich ein Problem habe ich, ich habe ein Kind Route nicht lösen konnte, wie folgt aus:Ich habe zwei Aktion für eine einzige Strecke, aber nicht als die URL bewaffnet

'apps'=>array(
    'type'=>'Segment', 
    'options'=>array(
     'route' => '/apps[/[:action[/:id]]]', 
     'constraints' => array(
      'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
     ), 
     'defaults' => array(
      'controller' => 'Apps\Controller\Index', 
      'action'  => 'index' 
     ), 
    ), 
    'may_terminate' => true, 
    'child_routes' => array(
     'ximages' => array(
      'type' => 'Segment', 
      'options' => array(
       'route' => '/ximages[/[:action[/:id_ximage]]]', 
       'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
       ), 
      'defaults' => array(
       'controller' => 'Apps\Controller\xImages', 
       'action' => 'index' 
      ) 
     ), 
    ), 

In der Datei .phtml Ich mag Zugriff auf den Pfad http://miserver/apps/view/1/ximages/images/1 und was ich tue, ist die folgende:

echo $this->url(
    'apps/ximages', 
    array(
    'action'=>'view', 
    'id' => 1, 
    'id_ximage' => 2 
) 
); 

Aber dieser Code nur druckt mich auf den Weg http://miserver/apps/view/1/ximages/index/1 und weiß nicht, wie Sie den Namen der Aktion des Kindes Route passieren kann.

Antwort

0

Ihre Route ist nicht richtig eingestellt, weil Ihr params die gleiche zwischen den Hauptweg und Ihr Kind Route sind (: action)

'route' => '/apps[/[:action[/:id]]]', 

'route' => '/ximages[/[:action[/:id_ximage]]]', 

den ersten Parameter von dem, was Ihr geben hier definiert ist:

Damit die Ansichtsparameter für Ihre Hauptroute richtig eingestellt sind, wird dieser Parameter jedoch verbraucht und kann nicht erneut verwendet werden. So in der zweiten params mit dem Namen Aktion aufgerufen Sie haben keine params soi Standard gegeben genannt wird und für Sie, es ist

controller' => 'Apps\Controller\xImages', 
       'action' => 'index' 

By the way, Ihre "Controller" params ist nutzlos;)

So i rate dir, deine Child-Route-Params zu ändern: action auf etwas anderes und setze den Parameter in deiner .phtml-Datei wie die anderen.

'route' => '/ximages[/[:action2[/:id_ximage]]]', 

echo $this->url(
    'apps/ximages', 
    array(
    'action'=>'view', 
    'id' => 1, 
    'id_ximage' => 2, 
    'action2' => 'images' 
) 

);