php - 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} 参数。
解决方案
你可以像这样使它可以为空
Route::get('/{lang?}','Welcomecontroller@index');
在你的控制器内部Welcomecontroller
,index
你可以像这样传递默认值:
public function index($lang = 'fa'){
// code
}
您可以从https://laravel.com/docs/6.x/routing#parameters-optional-parameters获取更多信息
推荐阅读
- html - 很难在滚动时创建固定标题。典型的解决方案不再适合我
- rest - Springboot 2:有什么方法可以将 TestRestTemplate 配置为仅使用 HTTP/2 协议?
- django - Django:bulk_destroy 返回“400:错误请求”
- python - 如何使用 vsc 在 python 的同一行中接受多个整数?
- c - “char *accum(const char *source);”是什么意思?在 C 中是什么意思?
- android - 在缺口设备模拟器上测试应用程序
- cmd - Dir 命令:如何仅显示创建文件的日期和从中创建的文件 .txt
- python - 在 aiohttp 请求中发送用户凭据
- azure - 了解 Microsoft Azure AD 代表 (OBO) 流
- java - 如何在使用 java 的字符串中只允许 !@#$%^&*