簡體   English   中英

導航不使用路線變量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM