这是我的代码:路线:
Route::get('lang/change', [LangController::class, 'change'])->name('changeLang');
nav.blade.php
<div class="col-md-2 col-md-offset-6 text-right">
<strong>Select Language: </strong>
</div>
<div class="col-md-4">
<select class="form-control changeLang">
<option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>
<option value="ar" {{ session()->get('locale') == 'ar' ? 'selected' : '' }}>Arabic</option>
</select>
</div>
@endauth
</ul>
</div>
<span class="text-white">{{ auth()->user() !=null ? auth()->user()->name : "Guest" }}</span>
</div>
</nav>
<script type="text/javascript">
var url = "{{ route('changeLang') }}";
$(".changeLang").change(function(){
window.location.href = url + "?lang="+ $(this).val();
});
</script>
这就是中间件:(我已经用web中间件在内核中注册了它:
public function handle(Request $request, Closure $next)
{
if (session()->has('locale')) {
App::setLocale(session()->get('locale'));
}
return $next($request);
}
3条答案
按热度按时间g9icjywg1#
你传递的参数是什么。我看到的都是没有参数的route-url
如果你愿意,你可以 checkout 这个URL,或者直接从Laravel文档中检查这个块
有时候,您可能需要指定一个路由参数,而该参数可能并不总是出现在URI中。您可以通过放置?参数名称后的标记。确保给予路由的相应变量指定默认值:
我假设你也在使用最新版本的Laravel,这里是使用参数Go To Docs进行路由的文档链接。
这里是确切的标签,你可以找到我的片段Laravel参数
deyfvvtc2#
在你的情况下有一个小误会。
您的路由不接受任何参数,您正在处理请求。在这种情况下,解决方案应该是下一个:
qv7cva1a3#
终于解决了这个问题,现在你可以在中间件中获取lang参数了
web.php
welcome.blade.php
MyMiddleware.php