繁体   English   中英

Laravel 中路由参数的默认值

[英]default value for route parameter in Laravel

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

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

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

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} 参数。

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

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

在您的控制器Welcomecontroller中的index函数中,您可以传递这样的默认值:

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

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

您可以使用 URL::defaults。 你也可以从https://laravel.com/docs/5.6/urls#default-values得到你的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM