保存选择值onchange Laravel

时间:2017-02-17 10:49:30

标签: php laravel laravel-5 controller views

我正在使用Laravel构建一个多语言应用程序,我需要用户能够从选择字段登录并选择他们的首选语言(表“语言”)并存储在数据库中(表中的“language_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>

数据库:“用户”表格中包含“language_id”

3 个答案:

答案 0 :(得分: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中,以管理整个应用程序中的下拉状态。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

这是一个简短的想法,你怎么能这样做:

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

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