Pregunta

Estoy usando prefijos para las lenguas, no estoy seguro de que este es el camino correcto, pero no quiero escribir rutas personalizadas para cada uno de mis controladores.Tengo 20 controladores por ahora (mayoría simple).

Tengo el problema de que /nl/contacto y /es/contacto están tratando de ruta para nl_index() y en_index(), que está muy bien para la administración de enrutamiento, pero todos los controladores fueron programados multi-lingual y el uso de i18n, por lo que deben utilizar sólo index(), modificar(), etc y no idioma _ delante de él.

Cómo puede hacerse esto?La razón por la que he añadido estos prefijos es que puedo usar el mismo controlador y funciones por más de contenido.Actualmente estoy escribiendo Configurar.escribir el idioma en beforeFilter para los idiomas basado en los primeros 2/3 de los caracteres de la url (/es, /nl).

¿Fue útil?

Solución

Te presentaré implementación en Croogo CMS Basado en CakePhp

Aquí está la clase CroogoRouter Enrutador

Mira esta línea:

Router::connect('/:locale/:controller/:action/*', array(), array('locale' => '[a-z]{3}'));

Esto creará Localized routes patrón, donde locale La variable puede ser Código de idioma de 3 letras (Leer en ISO 639)

Eso significa que si alguna de la ruta analizada comenzará con 3 letter code se usará como locale Variable pasada a AppController

Después Mira este archivo, donde se presenta el uso de dicha clase:

CroogoRouter::connect('/', array('controller' => 'nodes', 'action' => 'promoted'));

Como puede ver, conectará algunos action path (aquí /) al controlador y la acción, pero Croogorouter se encargará de localizar este camino con :locale variable

Nota: No te olvides de mencionar Licencia de MIT, que es predeterminado para Croogo CMS Si va a usar su código ;-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top