навигация не использует значение переменной маршрута

У меня есть маршрут, который определяет язык :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 сборки маршрута

0

Решение

Согласно комментарию Sven Buis, вы можете вручную добавлять текущее значение к каждому вызову помощника по URL, но это, вероятно, будет не лучшим способом, так как это означает добавление кода практически везде для одной цели.

Другое решение состоит в том, чтобы просто использовать последний параметр помощника вида url, который позволяет повторно использовать текущий параметр маршрута (установите его в true, по умолчанию false). Мне также не нравится это решение, потому что у вас могут быть крайние случаи, когда все значения по умолчанию не были переопределены, и это может нарушить ваш код в местах, которые вы не ожидаете.

Вы можете взглянуть на подход, используемый в https://github.com/juriansluiman/SlmLocale (пока работает только в ZF2, у меня не было времени закончить пиар для ZF3). Он использует систему событий для подключения к циклу отправки и установки вашего языка где-то там.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]