2017-04-15 5 views
3

多言語ラーベルウェブサイトhereの作成に関する記事があり、魅力的です。Artisanサービスが実行されている場合にのみ動作する言語切り替えツール

しかし、私は(例えば私のホスティングサービス上で)php artisan serveを実行していないとき、言語を切り替えること「ORIGINAL_LANGUAGE/LANG/destination_language」にリダイレクトしていないし、私に404 RouteNotFoundを与える:

NotFoundHttpException in RouteCollection.php line 179: 
in RouteCollection.php line 179 
at RouteCollection->match(object(Request)) in LanguageController.php line 
22 
at LanguageController->switchLang(object(Request), 'fr') 
at call_user_func_array(array(object(LanguageController), 'switchLang'), 
array('request' => object(Request), 'lang' => 'fr')) in Controller.php 
line 55 
at Controller->callAction('switchLang', array('request' => 
object(Request), 'lang' => 'fr')) in ControllerDispatcher.php line 44 
at ControllerDispatcher->dispatch(object(Route), 
object(LanguageController), 'switchLang') in Route.php line 204 
at Route->runController() in Route.php line 160 
at Route->run() in Router.php line 559 

私は全く持っています。

public function switchLang(Request $request, $lang) 
{ 
    // Store the URL on which the user was 
    $previous_url = url()->previous(); 

    // Transform it into a correct request instance 
    $previous_request = app('request')->create($previous_url); 

    // Get Query Parameters if applicable 
    $query = $previous_request->query(); 

    // In case the route name was translated 
    $route_name = app('router')->getRoutes()->match($previous_request)->getName(); 

    // Store the segments of the last request as an array 
    $segments = $previous_request->segments(); 

    // Check if the first segment matches a language code 
    if (array_key_exists($lang, config('translatable.locales'))) { 

     // If it was indeed a translated route name 
     if ($route_name && Lang::has('routes.'.$route_name, $lang)) { 

      // Translate the route name to get the correct URI in the required language, and redirect to that URL. 
      if (count($query)) { 
       return redirect()->to($lang . '/' . trans('routes.' . $route_name, [], $lang) . '?' . http_build_query($query)); 
      } 

      return redirect()->to($lang . '/' . trans('routes.' . $route_name, [], $lang)); 
     } 

     // Replace the first segment by the new language code 
     $segments[0] = $lang; 

     // Redirect to the required URL 
     if (count($query)) { 
      return redirect()->to(implode('/', $segments).'?'.http_build_query($query)); 
     } 

     return redirect()->to(implode('/', $segments)); 
    } 

    return redirect()->back(); 
} 

はそれが助けのご希望をありがとう

:それはから来る場所についての考え方は、ここに私のLanguageController.php方法 switchLang()です。! 10

(私はそれがルート/パブリックフォルダのルーティングの問題だと思うが、どこに見つけることができない)

答えて

-1

この問題は解決するのに非常に時間がかかる。

  1. は、お使いのOS上で別のドメインを作成し、パスから必ず削除するパブリックします

    2つのオプションがあります。

  2. 私と一緒に働く実際のドメインでプロジェクトをアップロードしてください。
関連する問題