Zend Framework 2 - Zend\Mvc outer\Http\Part - Configuración del módulo
-
12-12-2019 - |
Pregunta
Estoy creando una aplicación multilingüe usando ZF2.y no puedo determinar cómo agregar una URL parcial que formará la base de cada URL independientemente de los módulos.
http://localhost/en/us/application/index/index/
Entiendo totalmente cómo configurar /[:namespace[/:controller[/:action]]]
usando DI
http://localhost/application/index/index/
http://localhost/guestbook/index/index/
http://localhost/forum/index/index/
Lo que no entiendo es como configurar un Parte ruta que será la base para todas las rutas..En ZF1 usé Encadenamiento de rutas lograr esto..
Entonces necesito configurar un Parte ruta de /[:lang[/:locale]]
que se aplica en todo el sitio y luego deja que el módulo se configure /[:namespace[/:controller[/:action]]]
o cualquier otra ruta necesaria..
http://localhost/en/us/application/index/index/
http://localhost/zh/cn/application/index/index/
http://localhost/en/uk/forum/index/index/
Solución
Creo que lo que buscas es el child_routes
clave de configuración.Echa un vistazo a cómo ZfcUser configura su enrutamiento (aquí):crea una ruta literal base (/usuario) y luego encadena las subrutas (/usuario/login, etc.) en ella a través de child_routes
formación.
Creo que algo como esto te servirá:
'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',
),
),
),
),
),
),
Luego, en tu controlador puedes hacer esto para obtener el idioma y la configuración regional:
$this->params()->fromRoute('lang');
$this->params()->fromRoute('locale');