ZF2 - 使用语言进行导航路由

时间:2013-06-16 23:00:57

标签: zend-framework2 zend-navigation zend-translate

在ZF2中,我有两种语言英语和中文。每条路线都以以下语言开头:

  'about' => array(
      'type'    => 'Zend\Mvc\Router\Http\Segment',
      'options' => array(
           'route'       => '/[:lang]/about',
           'constraints' => array(
                'lang' => '(en|zh)?',
           ),
           'defaults' => array(
               'controller' => 'Application\Controller\About',
               'action'     => 'index',
               'lang'       => 'en',
           ),
       ),
   ),

我已经使用setTranslator翻译了标签,但我不知道如何在路线中添加语言参数。在我看来,这个问题Translation of URI segments in ZF2

'navigation' => array(
        'default' => array(
            array(
                'label' => 'About',
                'route' => 'about',
                'class' => 'top-level',
            ),
         ),

或者是否有更好的方法来处理此问题,例如将语言预先添加到每个网址How to prepend language to every url in Zend Framework

1 个答案:

答案 0 :(得分:1)

通常,导航中有一个params键来提供路径参数。它必须包含路径中使用的所有值的数组。

例如,对于路线foo[/:bar],您可以使用此导航配置:

array(
    'label'  => 'Foo',
    'route'  => 'foo-bar',
    'params' => array('bar => 'baz'),
),

在您的翻译案例中,提供一个名为params的{​​{1}}密钥,而不是一个密钥。

但是,您可能希望使用该语言的route match参数。如果您在语言lang的页面上,则参数自动为zh。然后,您可以使用zh

use_route_match