2017-02-17 61 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

在这两种情况下,每次用户加载页面时都需要中间件来设置语言。