Laravel在更改区域设置后重定向回同一页面



我实现多通道的方式是通过中间件和路由。

中间件Localization.php如下所示:

public function handle(Request $request, Closure $next)
{
$locale = $request->segment(1); 

if(empty($locale)) { 
return redirect()->to('/' . app()->getLocale());
}
if(in_array($locale, ['en','it'])) {
App::setLocale($locale);
$request->except(0); 
}
return $next($request);
}

在我的web.php中,我有:

Route::get('locale/{locale}', function ($locale){
Session::put('locale', $locale);
$path = Route::getCurrentRoute()->getPath();
return redirect($path);
})->name('langroute');

在刀片中,我是这样使用的:

<a class="dropdown-item" href="{{ url('/en') }}">

在更改为其他语言后,如何重定向回同一页面?

AppServiceProvider:中将全局变量共享到所有视图

<?php
namespace AppProviders;
use IlluminateSupportFacadesView;
use IlluminateSupportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$thisUrl = url()->current().'/';
if (app()->getlocale() == 'en') {
$newUrl  = str_replace('/en/', '/it/', $thisUrl);
}else{
$newUrl  = str_replace('/it/', '/en/', $thisUrl);
}
View::share('newUrl', $newUrl);
}
}

你可以像以前一样在刀片中重定向:

<a class="dropdown-item" href="{{ $newUrl }}">

最新更新