0

Я создаю многоязычное приложение с использованием ZF2 .. и не могу определить, как добавить URL-адрес части, который будет составлять базу каждого URL независимо от модулей ,Zend Framework 2 - Zend Mvc Router Http Part - Конфигурация модуля

http://localhost/en/us/application/index/index/ 

Я полностью понимаю, как настроить /[:namespace[/:controller[/:action]]] с помощью DI

http://localhost/application/index/index/ 
http://localhost/guestbook/index/index/ 
http://localhost/forum/index/index/ 

То, что я не понимаю, как настроить Часть маршрут, который будет основой для всех маршрутов .. В ZF1 I используется Route Цепной для достижения этой цели ..

Поэтому мне нужно настроить Часть маршрут /[:lang[/:locale]] который применяется сайт широко, а затем пусть модуль конфигурирования /[:namespace[/:controller[/:action]]] или любой другой маршрут необходимо ..

http://localhost/en/us/application/index/index/ 
http://localhost/zh/cn/application/index/index/ 
http://localhost/en/uk/forum/index/index/ 

ответ

2

Я думаю, что вы ищете ключ child_routes конфигурации. Посмотрите, как ZfcUser configures it's routing (here): он создает базовый маршрут Literal (/ user), а затем накладывает на него подпункты (/ user/login и т. Д.) Через массив child_routes.

Я думаю, что что-то подобное будет делать трюк для вас:

'router' => array(
    'routes' => array(
     'myapp' => array(
      'type' => 'Segment', 
      'options' => array(
       'route' => '/[:lang[/:locale]]', 
       'defaults' => array(
        'lang' => 'en', 
        'locale' => 'us', 
       ), 
      ), 
      'may_terminate' => false, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
        ), 
        'defaults' => array(
         'controller' => 'index', 
         'action'  => 'index', 
        ), 
       ), 
      ), 
     ), 
    ), 
), 

Тогда в контроллере вы могли бы сделать это, чтобы получить Ланг и локали:

$this->params()->fromRoute('lang'); 
$this->params()->fromRoute('locale'); 
+0

Спасибо за ответ .. что я ищу .. это набор lang: locale route в моем приложении по умолчанию .. тогда он станет базой для всех остальных модулей. ie .. если бы я использовал ZfcUser .. тогда url будет/zh/cn/user или/zh/cn/user/login .. – chameleon95

+0

как ребенок_r outes работают по маршрутам через модули. Я пытался следовать, когда маршруты объединяются, но он не работает, как хотелось бы. – chameleon95

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

  • Нет связанных вопросов^_^