0
すべてのURLに場所を追加する必要があります。私はこのような「RouteServiceProvider.php」で「mapWebRoutes」を使用:laravelセグメントの数が複数ある場合、ミドルウェアはルートグループ内で実行されません
protected function mapWebRoutes()
{
$locale = Request::segment(1);
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
'prefix' => $locale
], function ($router) {
require base_path('routes/web.php');
});
}
しかし、セグメントの数が1以下であるとき、ミドルウェアは実行されません。 たとえば、住所が下に正しく追加されています。ミドルウェア=>http://example.com/en/test
しかし、場所から復帰後
http://example.com/test
は、以下のアドレスに加算されません。
http://example.com/test1/test2
これは、ミドルウェアが実行されていないことを意味します。ミドルウェアの最初の行にecho 'test'; exit();
を追加します。ミドルウェアが実行されていることを確認します。しかし、セグメントの数が複数の場合、ミドルウェアは実行されません。
マイミドルウェアのコードは次のとおりです。私は、コードの下にmapWebRoutesを()に変更し、問題がsloved
public function handle($request, Closure $next)
{
if (!array_key_exists($request->segment(1), config('translatable.locales'))) {
// Store segments in array
$segments = $request->segments();
// Set the default language code as the first segment
$segments = array_prepend($segments, config('app.fallback_locale'));
// Redirect to the correct url
return redirect()->to(implode('/', $segments));
}
return $next($request);
}