首页 > 解决方案 > Laravel 中路由参数的默认值

问题描述

嗨,我的网站必须是多语言的,除了一个,一切都很好,例如我的主页路线如下:

Route::get('/{lang}','Welcomecontroller@index');

在启动方法的 AppServiceProvider 中,我编写了以下函数:

public function boot()
{
 $request=Request::capture();
 Cookie::queue('lang',$request->lang);
 $lang=$request->has('lang') ? $request->lang : "fa";
 app()->setLocale($lang);
}

我的代码的问题就在这里,我的代码在传递像 ?lang=en 这样的查询字符串但在像 get('/{lang}','WelcomeController@index'); 这样的路由中传递参数时工作正常 如果参数不存在,则显示 404 页面,如果参数通过,则始终显示 fa lang。如果默认情况下不存在 {lang} 参数,是否有任何方法可以使用此方法,例如 en lang 和 url 显示就像http://localhost:8000/http://localhost:8000/en以及如何获取 {该方法中来自 url 的 lang} 参数。

标签: phplaravel

解决方案


你可以像这样使它可以为空

Route::get('/{lang?}','Welcomecontroller@index');

在你的控制器内部Welcomecontrollerindex你可以像这样传递默认值:

public function index($lang = 'fa'){
// code
}

您可以从https://laravel.com/docs/6.x/routing#parameters-optional-parameters获取更多信息


推荐阅读