【问题标题】:Laravel - Add Route Wildcard to every RouteLaravel - 为每条路线添加路线通配符
【发布时间】:2019-12-09 22:17:38
【问题描述】:

我在 laravel 中创建了一个多语言应用程序,并且对于每条路线(因为我想在 url 中查看我的语言是什么)我需要

www.example.com/{locale}/home 

例如,而 {locale} 是设置语言,而 home well 是 home。但是对于每条路线,我都需要声明该语言环境通配符。有没有办法用中间件或其他东西来完成这个,在路由执行之前添加这个? 谢谢!

【问题讨论】:

    标签: laravel routes middleware


    【解决方案1】:

    你可以使用前缀。

    Route::group(['prefix' => '{locale}'], function () {
        Route::get('home','Controller@method');
        Route::get('otherurl','Controller@method');
    });
    

    以及您现在如何访问它。

    www.example.com/{locale}/home 
    www.example.com/{locale}/otherurl
    

    了解更多信息。 https://laravel.com/docs/5.8/routing#route-group-prefixes

    【讨论】:

    • 对不起,我的错误,答案是正确的,但是对于一个我拼写错误的问题。我希望用户输入 /home ,并且 laravel 自动设置默认浏览器语言设置的 {locale} 以添加到主页 url 之前:我输入 www.example.com/home ,然后在浏览器 url 中它会是 www.example.com/en/home
    • 请检查这是否可行 我在我的本地 laracasts.com/discuss/channels/laravel/… 中检查了
    【解决方案2】:

    不确定我是否理解您的请求,但我相信这是您正在寻找的范围:

    可以接收“语言环境”的通用路由,您可以根据该路由以适当的语言提供页面。

    如果是这样,我会定义这样的路线:

    Route::get({locale}/home, 'HomeController@index');
    

    然后在您的 HomeController@index 中,您将拥有 $locale 变量,基于该变量您可以实现您的语言逻辑:

    class HomeController extends Controller
    {
        /**
         * Show the application homepage.
         *
         * @return mixed (View or Redirect)
         */
        public function index(Request $request, $locale)
        {
            switch ($locale) {
            case 'en':
                //do english logic
                break;
            so on...
            }
        }
    

    希望对你有帮助

    【讨论】:

    • 这正是我现在所拥有的,请刷新页面并查看我对 dilip hirapara 答案的评论。对不起,是我把问题拼错了。不过谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    相关资源
    最近更新 更多