【问题标题】:route() generates url without locale prefixroute() 生成没有语言环境前缀的 url
【发布时间】:2017-11-09 18:04:58
【问题描述】:

我正在尝试通过我的一个 (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 生成器会添加区域设置。

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

谢谢!

【问题讨论】:

    标签: php laravel-5.3 blade


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多