Sto lavorando in zend framework 2, sto usando il tipo di segmento per tutti i miei percorsi ma ho notato l'uso del tipo di percorso letterale nell'applicazione zend skeleton. Quali sono?Qual è la differenza tra percorso letterale e segmento?
risposta
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.
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');