Php 更改Laravel时保存选择值

Php 更改Laravel时保存选择值,php,laravel,laravel-5,controller,views,Php,Laravel,Laravel 5,Controller,Views,我正在使用Laravel构建一个多语言应用程序,我需要用户能够登录并从选择字段中选择他们的首选语言(表“语言”),并且只需从字段中选择即可将其存储在数据库中(“表“用户”中的“语言id”)。我目前不知道如果没有表单和提交按钮,我怎么能做到这一点。有人能给我解释一下我该怎么做吗 控制器:所有可用语言都存储在一个变量中,并发送到所有视图 namespace App\Http\Controllers; use App\Language; use Illuminate\Foundation\Bus\D

我正在使用Laravel构建一个多语言应用程序,我需要用户能够登录并从选择字段中选择他们的首选语言(表“语言”),并且只需从字段中选择即可将其存储在数据库中(“表“用户”中的“语言id”)。我目前不知道如果没有表单和提交按钮,我怎么能做到这一点。有人能给我解释一下我该怎么做吗

控制器:所有可用语言都存储在一个变量中,并发送到所有视图

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>
  • @foreach($languages作为$language) {{$language->name} @endforeach

  • 数据库:“用户”表具有“语言id”

    以下是如何做到这一点的简要想法:

    在select框的change事件中,激发一个AJAX调用并将值存储到数据库表中


    如果您不知道如何编码,请告诉我。可以为您提供简短的代码。

    以下是如何做到这一点的简要想法:

    在select框的change事件中,激发一个AJAX调用并将值存储到数据库表中


    如果您不知道如何编码,请告诉我。可以为您提供简短的代码。

    我假设用户登录后,您将其中一种语言显示为默认语言。在那之后,试着做一些事情,比如:

    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\u id
    的值,并根据该值显示所选语言选项。您还可以在
    会话中保留该值,以管理整个应用程序中的下拉状态。

    我假设用户已登录,您将其中一种语言显示为默认语言。在那之后,试着做一些事情,比如:

    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\u id
    的值,并根据该值显示所选语言选项。您还可以在
    会话中保留该值,以管理整个应用程序中的下拉状态。

    您必须将该数据保存在某个位置。在一些cookie或会话中。如果你想在Laravel中管理它,我建议使用
    AJAX
    call,这样你就可以在你的应用程序中处理它。Eather将其保存在会话或cookie中

    另一种方法是使用javascript,而不是在加载页面并设置语言时读取相同的
    cookie


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

    您必须将数据保存到某个地方。在一些cookie或会话中。如果你想在Laravel中管理它,我建议使用
    AJAX
    call,这样你就可以在你的应用程序中处理它。Eather将其保存在会话或cookie中

    另一种方法是使用javascript,而不是在加载页面并设置语言时读取相同的
    cookie


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

    那么语言选择是登录表单的一部分?那么语言选择是登录表单的一部分?