cómo establecer el prefijo predeterminado para el enrutamiento en CakePHP 3?
-
28-10-2019 - |
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).
Solución
Te presentaré implementación en Croogo CMS
Basado en CakePhp
Aquí está la clase Enrutador CroogoRouter
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 ;-)