Domanda

Sto usando i prefissi per le lingue, non sono sicuro che questo sia il modo giusto, ma non voglio scrivere percorsi personalizzati per ciascuno dei miei controller. Ormai ho 20 controller (il più semplice).

Ho il problema che /nl /contatto e /en /contatto stanno cercando di instradare a nl_index () e en_index (), il che va bene per il routing di amministrazione, ma tutti i controller sono stati programmati multi-lingualmente e usando i18n, quindi dovrebbero usare Just Index (), Edit (), ecc. E non lingua_ di fronte.

Come si può fare? Il motivo per cui ho aggiunto questi prefissi è che posso usare lo stesso controller e le funzioni per più contenuti. Attualmente sto scrivendo configure.write la lingua in prima difilter per le lingue in base ai primi 2/3 caratteri dell'URL (/en,/nl).

È stato utile?

Soluzione

Ti presenterò l'implementazione in Croogo CMS Basato su CakePhp

Ecco la classe CroogoRouter Router

Guarda questa riga:

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

Questo creerà Localized routes pattern, dove locale la variabile può essere Codice linguistico a 3 lettere (Leggi in ISO 639)

Ciò significa, se inizierà uno qualsiasi del percorso analizzato 3 letter code Sarà usato come locale variabile passata ad AppController

Quindi Guarda questo file, dove viene presentato l'uso di tale classe:

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

Come puoi vedere, ne collegherai alcuni action path (qui /) a controller e azione, ma Croogrouter si occuperà di localizzare questo percorso con :locale variabile

Nota: non dimenticare di menzionare Licenza MIT, che è predefinito per CROOGO CMS Se hai intenzione di usare il suo codice ;-)

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