【问题标题】:Save select value onchange Laravel保存选择值 onchange Laravel
【发布时间】:2017-02-17 10:49:29
【问题描述】:

我正在使用 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>

数据库:“users”表有“language_id”

【问题讨论】:

  • 所以语言选择是登录表单的一部分?

标签: php laravel laravel-5 controller views


【解决方案1】:

我假设用户已登录并且您将其中一种语言显示为默认语言。之后尝试以下操作:

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 中。

    其他方法是使用 javascript write it in cookie,而不是在以某些 middleware 加载页面并设置语言时读取相同的 cookie

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

    【讨论】:

      【解决方案3】:

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

      在选择框发生更改事件时,触发 AJAX 调用并将值存储到数据库表中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        • 2017-12-28
        • 1970-01-01
        • 2018-10-28
        • 2016-07-27
        • 2020-12-18
        • 2012-12-01
        相关资源
        最近更新 更多