laravel редирект

Рейтинг: 0Ответов: 0Опубликовано: 17.03.2023

Установил шаблон laravel

https://github.com/EliteDevSolution/codecanyon-onno-laravel-news-magazine-script

Сделал локализацию, но при url 'base_url/en' редиректит на 'base_url/'

Пытался найти этот редирект, но так и не нашёл по умолчанию языки локализации были en/ar

Route:

Route::get('lang/{lang}', ['as' => 'lang.switch', 'uses' => 'Site\LanguageController@switchLang']);

Route::group(
    [
        'prefix' => '{locale}',
        'where' => ['locale' => '[a-zA-Z]{2}'],
        'middleware' => ['set_locale']
    ],
    function () use($page, $article){...}

Controller:

public function switchLang($lang)
  {
    if (array_key_exists($lang, Config::get('languages'))) {
      $redirectUrl = $this->getBackUrl($lang);
      session(['locale' => $lang]);
      Cookie::queue('lang', $lang, time() + time() + 60 * 60 * 24 * 30, null, null, false, false);

      return Redirect::to($redirectUrl);
    }

    return Redirect::back();
  }

  private function getBackUrl(string $lang)
  {
    $backUrl = url()->previous();
    // dd($backUrl);
    foreach (array_keys(Config::get('languages')) as $langSlug) {
      if (str_contains($backUrl, $langSlug)) {
        return str_replace($langSlug, $lang, $backUrl);
      }
    }

    return $backUrl;
  }

Middleware:

class SetLocaleMiddleware
{

    public function handle(Request $request, Closure $next)
    {
        // App::setlocale(session('locale'));
        $lang = $request->segment(1);
        if($lang == 'en' || $lang == 'fr' || $lang == 'es' || $lang == 'ru' || $lang == 'it' || $lang == 'de' || $lang == 'pt') {
            session(['locale' => $lang]);
            App::setlocale($lang);
            Cookie::queue('lang', $lang, time() + time() + 60 * 60 * 24 * 30, null, null, false, false);
        } else {
             return redirect()->to('/fr');
            // \abort(404);
        }
        URL::defaults(['locale' => app()->getLocale()]);
        return $next($request);
    }
}

Ответы

Ответов пока нет.