我在这里指定了一种语言:lang
(Zend Framework 3):
'contact' => [
'type' => Segment::class,
'options' => [
'route' => '/:lang/hello',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'contact',
'lang' => 'en'
]
],
],
当我转到网页http://localhost/pp/public/it/hello
时,它会将it
值存储到lang segment
。
问题在于我的导航它显示的其他区域如下所示:
http://localhost/pp/public/en/services
应该是
http://localhost/pp/public/it/services
Zend\Navigation
是否没有使用值it
而不是默认值en
作为路径程序集的lang参数 < / p>
答案 0 :(得分:0)
根据Sven Buis评论,您可以手动将当前值添加到每个url帮助程序调用,但这可能不是最好的方法,因为这意味着为了一个目的几乎无处不在地添加代码。
另一种解决方案是简单地使用url视图助手的最后一个参数,该参数允许重用当前路由参数(将其设置为true,默认为false)。我也不喜欢这个解决方案,因为你可以有一些边缘情况,其中所有的默认值都没有被重新定义,这可能会破坏你不想要的地方的代码。
您可以查看https://github.com/juriansluiman/SlmLocale中使用的方法(到目前为止仅适用于ZF2,我没有时间完成ZF3的PR)。它使用事件系统连接调度循环并在那里的某处设置语言设置。