【问题标题】:How to make sub-routes with prefix but can work without prefix in Laravel?如何在 Laravel 中制作带前缀但不带前缀的子路由?
【发布时间】:2021-04-28 16:08:12
【问题描述】:

我正在使用 Laravel 构建一个多语言网站,但我遇到了关于语言环境的问题。

我现在有 2 种语言 (Ar/En),我的路线接受前缀来确定语言。

如果没有前缀并设置默认区域设置,我希望我的路由有效。

我当前的代码是:

Route::group([
    'prefix' => '/{locale?}',
    'where' => ['locale' => '^(ar|en)$'],
    'middleware' => ['setLocale']
], function(){
    Route::get('/', function () {
        return view('home');
    });

    Route::get('test', function (){
        return 'test';
    });
});

它适用于第一条路线,但对于任何子路线,如果没有提供前缀,它就不起作用!

【问题讨论】:

    标签: php laravel locale multilingual


    【解决方案1】:

    你可以定义一个fallback route

    Route::fallback(function () {
        abort_if(in_array(request()->segment(1), ['ar', 'en']), 404);
    
        return redirect()->to(url(app()->getLocale().request()->getPathInfo()));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2015-03-06
      • 2018-12-18
      • 1970-01-01
      相关资源
      最近更新 更多