Я начинаю ZF2 и работаю на своем первом сайте. Мне нужен многоязычный сайт и у меня есть проблемы с маршрутизацией. Я настроил свои маршруты следующим образом:
'lang' => array(
'type' => 'segment',
'options' => array(
'route' => '/:lang',
'constraints' => array(
'lang' => 'en|it'
),
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index'
)
),
'may_terminate' => true,
'child_routes' => array(
'home' => array(
'type' => 'literal',
'options' => array(
'route' => '/home',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index'
)
)
),
'other routes' ...
)
)
Итак, я могу позже использовать /lang
для настройки переводчика. (www.site.com/it/home
или www.site.com/en/home
)
Теперь мне нужно добавить ссылки в макете для переключения языков, поэтому мне нужно сгенерировать URL-адрес на той же странице, но переключить "it" на "en" и наоборот. Как я могу это сделать? Могу ли я как-то получить только следующую часть маршрута ('/home'
, '/about'
, '/show/gallery'
и т.д.) Из представления?
Я думаю, вы просто можете сделать следующее в своем макете/представлении:
//using url view helper
echo $this->url(null, array('lang' => 'en'));
Путем присвоения null как имени маршрута помощник примет текущее сопоставленное имя, поэтому теоретически он должен работать. Но, к сожалению, я не могу сказать, что произойдет, если маршрут будет сегментом с уже установленными параметрами, sry.