【发布时间】:2018-06-08 19:01:05
【问题描述】:
我在网站页脚有一个选择菜单。每个选项都是一个国家的名称。该站点默认为英语,但用户应该能够选择可用的 5 个国家之一,并且该站点应该将文本翻译成该选定的语言。
下面的代码显示为“Missing required parameters for [Route: site.translate] [URI: {language}].”。你知道错误在哪里吗?
// 语言环境中间件
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);
}
}
// TranslateLocale 控制器
class TranslateLocale extends Controller
{
public function language($language)
{
if(Session::has(locale)){
session()->set('locale', $language);}
else{
session()->set('locale', 'en');
}
return redirect()->back();
}
}
路线:
Route::get('/{language}', [
'uses' => 'TranslateLocale@language',
'as' =>'site.translate'
]);
页脚的HTML选择菜单供用户选择语言:
<h3>Language</h3>
<form method="get" action="{{route('site.translate')}}">
{{csrf_field()}}
<select name="language" class="form-control" id="exampleFormControlSelect1">
<option selected class="selected" value="de">German</option>
<option value="en">English</option>
<option value="fr">French</option>
<option value="es">Spanish</option>
<option>5</option>
</select>
</form>
【问题讨论】:
标签: laravel