2013-02-14 4 views

risposta

17

Credo che quello che è in realtà Umair richiesto è, qual è lo scopo del percorso letterale è, quando il percorso segmento copre già questa funzionalità.

Per spiegarlo in poche parole; Il percorso del segmento esegue una corrispondenza piuttosto complessa sull'input con un'espressione regolare generata, mentre il percorso letterale eseguirà un semplice confronto tra stringhe. Questo lo rende molto più veloce e dovrebbe essere preferito quando non è richiesta alcuna corrispondenza dei parametri.

12

Un percorso letterale sembra essere buono per le pagine una tantum, come l'esempio di base di seguito:

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/home', 
       'defaults' => array(
        'controller' => 'homeController', 
        'action' => 'index', 
       ) 
      ) 
     ) 
    ) 
) 

Per chi non ha familiarità con i percorsi di segmento. Questi sono dinamici e passano i segmenti dell'URL nel controller. Questo esempio è dal Zend Framework 2 Guida introduttiva Tutorial

'router' => array(
    'routes' => array(
     'album' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/album[/:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Album\Controller\Album', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

Il segmento action andrà a una funzione del controller con quel nome. Quindi un URL come /album/edit/2 passerà alla funzione editAction() nello AlbumController. È possibile accedere a in un paio di modi nel controller.

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

o

$id = $this->getEvent()->getRouteMatch()->getParam('id');