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 parte percorso di /[: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/
.

È stato utile?

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');
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top