route() 生成 url 没有语言环境前缀

route() generates url without locale prefix

我正在尝试通过我的(Blade)模板之一中的 route() 助手生成一个 url。

我的 web.php 文件看起来像这样(虚拟路由,但结构相同)

// Generic routes
Route::get('/test', 'HomeController@test')->name('test');

// Localized routes
Route::group([
    'prefix' => LaravelLocalization::setLocale(),
    'middleware' => [ 'localeSessionRedirect', 'localizationRedirect' ]
    ], function() {
        Route::get(LaravelLocalization::transRoute('routes.product'), 'ProductController@product')->name('product');
});

现在,如果我尝试在我的测试路线模板中这样做:

{{ route('product', ['slug' => 'product-slug']) }}

那么它不会生成这个 url:

https://my-domain.com/en-GB/product/product-slug

但它会生成此 url(注意缺少的语言环境):

https://my-domain.com/product/product-slug

但是,...如果我将测试路由移动到本地化路由组中,那么 url 生成器会添加语言环境。

这是预期的行为吗? 这是否意味着我必须将我的所有路由添加到本地化路由组中,即使有些路由没有被翻译?

谢谢!

我 'fixed' 通过使用 mcamara/laravel-localization 包的 getLocalizedURL() 帮助器而不是 route() 帮助器来做到这一点。

{{ LaravelLocalization::getLocalizedURL(App::getLocale(), route('product', ['slug' => 'product-slug'])) }}