我正在使用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”
答案 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调用并将值存储到数据库表中。
如果您不知道如何编码,请告诉我。可以给你简短的代码。