【问题标题】:how to customize Auth::routes in laravel如何在 laravel 中自定义 Auth::routes
【发布时间】:2020-12-19 20:33:39
【问题描述】:

我希望你是最好的。 我正在尝试在我的 Laravel 应用程序中创建多语言功能。 但我不知道如何在我的网络路由文件中插入 Auth::routes 以支持我的多语言。 此代码适用于我,但 Auth::routes 链接设置不正确。 该应用程序可以识别目标语言,但在 Auth::routes() 链接中不正确。 例如,所有页面都基于目标语言,但链接使用本地语言。 (目标是 en_us 但链接在 fa_IR)

    Route::get('/', function () 
{
   // echo "befpreRpikte".$request->cookie('language').'<br/>';
 //   return ('CookieInRoute\'/\''.request()->cookie('language'));
     return redirect(App::getLocale().'/welcome');
  
})->middleware(CheckLanguage::class);

Route::get('/{locale}',function($locale)
{
    return redirect($locale.'/welcome');

});

Route::get('{locale}/welcome',function($locale)
{
    //echo('CookieInRoute\'/\''.request()->cookie('language'));
    //die(App::getLocale());
    return view('welcome');

})->middleware(CheckLanguage::class);

Route::group(['prefix' =>App::getLocale()], function () {

  Auth::routes();
   // Route::get(App::getLocale().'/login','HomeController@login');
//Route::get('{locale}/home','HomeController@index');

});

and my middle ware is:

      public function handle($request, Closure $next)
    {
        //echo(var_dump(request()->cookie('language')));
       //if(empty(request()->cookie('language')))
            cookie()->queue('language',$this->checkUserIsoCode($request->path()),60);
             App::setLocale($this->checkUserIsoCode($request->path()));
       // dd(request()->cookie('language'));
     return $next($request);
    }
    private function checkUserIsoCode($path)
    {
       // echo '<br/> <c> c</c></br>';

     $available_locales=config('app.all_locales');
    
     if($path==null || $path=="/")// => "/" in addressbar
        {
            try
            {
                $userLocale=\Location::get(request()->ip())->countryCode;
            }
            catch(Exception $e)
            {

            $userLocale="fa_IR";
            }
        }
         else
         $userLocale=$path[0];//locale  =>/locale/address

     foreach($available_locales as $locale)
     {
        if(strpos($locale,$userLocale)!==false)//if $locale contain userlocale
         {
             $userLocale=$locale;
             break;
         }
     }
     if(!in_array($userLocale,$available_locales,TRUE))
        $userLocale=config('app.fallback_locale');
     return $userLocale;

    }

【问题讨论】:

    标签: php laravel authentication routes


    【解决方案1】:

    您可以对所有路线进行分组,以便所有路线都以语言环境作为前缀:

    Route::group(['prefix' => '{locale}'], function() {
    
        Route::get('/', function () {
            return view('welcome');
        });
    
        Auth::routes();
    
        Route::get('/home', 'HomeController@index')->name('home');
    })->middleware(CheckLanguage::class);
    

    这篇博文似乎解决了你想要做的事情:

    https://laraveldaily.com/multi-language-routes-and-locales-with-auth/

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 1970-01-01
      • 2019-05-06
      • 2018-01-18
      • 2021-01-03
      • 2018-05-07
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多