route()生成没有区域设置前缀的url

时间:2017-11-08 15:29:14

标签: php laravel-5.3 blade

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

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

dependencies

现在,如果我尝试在测试路径的模板中执行此操作:

// 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

但是,...如果我将测试路径移动到Localized路由组,则url生成器会添加区域设置。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我通过使用mcamara / laravel-localization包的getLocalizedURL()帮助器而不是route()帮助器来“修复”这个。

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