Zend Framework 2 - Zend \ MVC \ Router \ HTTP \ Part - Configurazione del modulo
-
12-12-2019 - |
Domanda
Sto creando un'applicazione multilingua usando ZF2 .. e non è possibile determinare come aggiungere un URL di parte che costituirà la base di ciascun URL indipendentemente dai moduli.
http://localhost/en/us/application/index/index/
.
Capisco totalmente come configurare /[:namespace[/:controller[/:action]]]
usando DI
http://localhost/application/index/index/
http://localhost/guestbook/index/index/
http://localhost/forum/index/index/
.
Quello che non capisco è come configurare un percorso parte che sarà la base per tutti i percorsi .. in ZF1 ho usato Bilancia del percorso per ottenere questo ..
Quindi ho bisogno di configurare una parte /[:lang[/:locale]]
che applica il sito largo e quindi consentono il modulo configurare /[:namespace[/:controller[/:action]]]
o qualsiasi altro percorso necessario ..
.http://localhost/en/us/application/index/index/
http://localhost/zh/cn/application/index/index/
http://localhost/en/uk/forum/index/index/
Soluzione
Penso che cosa stai cercando è il tasto di configurazione child_routes
.Dai un'occhiata a come ZFCUSER Configura il suo routing (qui) : crea un percorso letterale di base (/ utente) e poi catene i sub-routine (/ utente / login, ecc.) Su di esso tramite l'array child_routes
.
Penso che qualcosa di simile farà il trucco per te:
'router' => array(
'routes' => array(
'myapp' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:lang[/:locale]]',
'defaults' => array(
'lang' => 'en',
'locale' => 'us',
),
),
'may_terminate' => false,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'index',
'action' => 'index',
),
),
),
),
),
),
.
Poi nel tuo controller potresti farlo per ottenere il lang e la localizzazione:
$this->params()->fromRoute('lang');
$this->params()->fromRoute('locale');
.