2017-02-17 79 views
1

我正在用Laravel構建一個多語言應用程序,我需要用戶能夠登錄並從選擇字段中選擇他們的首選語言(表「語言」)並將其存儲在數據庫中( 「用戶」表中的「language_id」),只需從字段中選擇它即可。我目前不知道如何在沒有表單和提交按鈕的情況下實現這一點。有人可以向我解釋我該如何正確地做到這一點?保存select on value 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

我想用戶已經登錄,並且顯示其中一種語言爲默認語言。之後嘗試一些事情,如:

jQuery的:在每次登錄

$('#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 
}); 

取的language_id值,並根據該值顯示選定的語言選項。您還可以在session中保留該值以管理整個應用程序中的下拉狀態。

2

您必須在某處保存該數據。在某些cookie或會話中。如果你想在Laravel中管理它,我建議使用AJAX調用,這樣你就可以在你的應用中處理它。 Eather將其保存在會話中或cookie中。

其他的方法是用write it in cookie與javascript相比,當讀取一些middleware中的頁面並設置語言時,讀取的結果爲cookie

在這兩種情況下,每次用戶加載頁面時都需要中間件來設置語言。