2010-01-11 3 views
0

Я пытаюсь создать префикс маршрутизации, который был бы по умолчанию.CakePHP Маршрутизация с использованием префикса языка с префиксом по умолчанию

http://localhost/heb/mycont бы оставить на иврите странице, в то время как

http://localhost/mycont приведет к английской странице.

Router::connect('/:language/mycont',array('controller'=>'contname','action'=>'index'),array('language'=>'[a-z]{0,3}')); 

Этот код позволяет мне использовать 0-3 буквы для языка, но для этого по-прежнему требуется язык!

http://localhost/a/mycont будет работать

http://localhost/mycont не работает

Любые идеи, как исправить это? Возможно ли это с помощью маршрутизации по умолчанию?

ответ

0

Мое решение было просто, чтобы настроить/на определенном языке, в то время как все остальное помечается /: язык/

Таким образом, я не делал дублирующие маршруты.

2

Позвольте мне предисловие к этому, заявив, что я не специалист по маршрутизации, но в этом случае имеет смысл, что то, что у вас есть, не будет работать, потому что маршрут ожидает параметр языка; маршрут не будет соответствовать, если его там нет.

Чтобы «исправить» (процитировано, так как оно действительно не сломано), вы можете попробовать установить свой языковой стандарт по умолчанию, а в своем AppController перезаписать, если присутствует значение :language.

+0

Это выглядит как быстрое и надежное решение для меня! Единственным разумным вариантом, о котором я могу думать, было бы переопределить функцию Router :: connect, чтобы он установил значение по умолчанию: language, если ни один не присутствует. Но это может быть излишним. –

Смежные вопросы