2016-12-07 2 views
0

Dans ZF3 je veux obtenir le paramètre par défaut de route. Je reçois des paramètres de cette façon dans le contrôleur:Ne pas obtenir le paramètre de route par défaut dans ZF3

$params = $this->params()->fromRoute('crud'); 

Mon urls ressemble à ceci:

1: somedomain/admin/color/add 
2: somedomain/admin/color 

En 1) Je reçois add dans ma variable $params.
Dans 2) Je reçois null mais je me attends par défaut (dans ce cas view)

Je pense que ce problème est avec mauvaise configuration du routeur.

'admin' => [ 
      'type' => Segment::class, 
      'options' => [ 
       'route' => '/admin/:action', 
       'defaults' => [ 
        'controller' => Controller\AdminController::class, 
        'action' => 'index', 
       ], 
      ], 
      'may_terminate' => true, 
      'child_routes' => [ 
       'color' => [ 
        'type' => Segment::class, 
        'options' => [ 
         'route' => '/:crud', 
         'constraints' => [ 
          'crud' => 'add|edit|delete|view', 
         ], 
         'defaults' => [ 
          'controller' => Controller\AdminController::class, 
          'crud' => 'view', 
         ], 
        ], 
       ], 
      ], 
      ], 

Répondre

2

Dans la définition de votre itinéraire, vous ne dit pas le routeur que votre paramètre crud est optionnel. Donc, lorsque vous appelez somedomain/admin/color, c'est l'itinéraire /admin/:action qui est sélectionné.

Pour spécifier un paramètre optionnel, utilisez la notation de support (en supposant que vous utilisez la même action):

'admin' => [ 
    'type' => Segment::class, 
    'options' => [ 
     'route' => '/admin/:action[/:crud]', 
     'defaults' => [ 
      'controller' => Controller\AdminController::class, 
      'action' => 'index', 
      'crud' => 'view', 
     ], 
     'constraints' => [ 
      'crud' => 'add|edit|delete|view', 
     ], 
    ], 
], 
+0

Je l'ai fait déjà. Mais merci. –