2017-02-17 18 views
1

私はLaravelで多言語アプリケーションを構築しています。ユーザーがログインし、選択したフィールドから優先言語(テーブル "言語")を選択してデータベースに保存する必要があります"users"の "language_id")をフィールドから選択するだけです。私は現在、フォームと送信ボタンなしでこれをどのように達成できるのか、考えていません。誰かが私にこのことを正しく行う方法を説明することができますか?選択値を保存するon Laravel

コントローラ:使用可能なすべての言語が変数に格納され、すべてのビューに送信されます。

namespace App\Http\Controllers; 

use App\Language; 
use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 
use Illuminate\Support\Facades\View; 

class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 


    public function __construct() 
    { 
     $languages = Language::all(); 

     View::share('languages', $languages); 
    } 

} 

メニュー選択:言語を選択フィールドに移入foreachループは、コントローラを介して送信してください。

   <li> 

         <select class="form-control" id="language" name="language"> 
          @foreach ($languages as $language) 
           <option value="{{ $language->id }}">{{ $language->name }}</option> 
          @endforeach 
         </select> 
       </li> 

データベース:「ユーザー」テーブル「LANGUAGE_ID」ここ

+0

言語選択はログインフォームの一部ですか? – Jerodev

答えて

1

はどのようにあなたがいることを行うことができます簡単な考えである持っている:選択ボックスの変更イベントで

を、AJAXを発射値を呼び出してデータベーステーブルに格納します。

コード作成方法がわからない場合は教えてください。簡単なコードを伝えることができます。

2

ユーザがログインしていて、その言語のいずれかをデフォルト言語として表示するとします。 language_idの値を取得し、その値に応じて選択した言語オプションを表示

$('#language').change(function(){ 
    // make an ajax call and save the selected language option 
    // in the user table under the `language_id` column 
    // and change the language of pages when selection changed 
}); 

各ログイン時に:

のjQuery:その後のようないくつかのことを試してみてください。また、その値をsessionのままにして、アプリケーション全体のドロップダウン状態を管理することもできます。

2

あなたはそのデータをどこかに保存する必要があります。クッキーまたはセッションによってはLaravelで管理したい場合は、AJAXコールを使用してアプリ内で処理できるようにすることをおすすめします。 Eatherはセッションまたはクッキーに保存します。

他の方法は、middlewareにページを読み込んで言語を設定すると、同じcookieを読むよりも、JavaScriptでwrite it in cookieになります。

どちらの場合でも、ユーザーがページをロードするたびに言語を設定するためにミドルウェアが必要です。

関連する問題