[英]navigation not using route variable value
我有一條在此處指定語言: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
的值而不是路徑裝配的lang參數的默認值en
根據Sven Buis的評論,您可以手動將當前值添加到每個url幫助器調用中,但這可能不是最好的方法,因為這意味着幾乎在任何地方都添加了代碼以實現單一目的。
另一個解決方案是簡單地使用url視圖幫助器的最后一個參數,該參數允許重用當前的route參數(將其設置為true,默認為false)。 我也不喜歡這種解決方案,因為您可能會遇到一些極端情況,即所有默認值都沒有重新定義,這可能會在您不希望看到的地方破壞代碼。
您可以查看https://github.com/juriansluiman/SlmLocale中使用的方法(到目前為止,僅在ZF2中有效,我還沒有時間完成ZF3的PR)。 它使用事件系統掛接到調度循環,並在其中設置您的語言設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.