该选择允许用户选择3种语言(英语,西班牙语和德语)中的1种。目的是,如果用户选择英语,则网站的所有内容都将变为英语,其他语言也将变为相同。
但是有此错误:
“使用未定义的恒定语言环境-假定为'locale'”。
LanguageController:
class LanguageController extends Controller
{
public function changeLanguage(Request $request)
{
if(Session::has(locale)){
session()->set('locale', $request->language);}
else{
session()->set('locale', 'en');
}
return redirect()->back();
}
}
HTML:
<form method="post" action="{{route('site.translate')}}" id="translate">
{{csrf_field()}}
<select name="language">
<option value="en">English</option>
<option value="de">German</option>
<option value="es">Spanish</option>
</select>
</form>
LocaleMiddleware:
<?php
namespace App\Http\Middleware;
use Closure;
class LocaleMiddleware
{
protected $languages = ['en','fr','es', 'de'];
public function handle($request, Closure $next)
{
if(!session()->has('locale'))
{
session()->put('locale', $request->getPreferredLanguage($this->languages));
}
app()->setLocale(session('locale'));
return $next($request);
}
}
在选择菜单更改时提交表单的代码:
var myFormName = "translate";
$('#language').on('change', function() {
document.forms[myFormName].submit();
});
答案 0 :(得分:1)
在区域设置周围加上引号...所以...
if(Session :: has(locale)){
更改为
if(Session :: has('locale')){
- 语法提示:
variable = $var
constant = const
string = 'string'