【发布时间】:2018-07-13 20:48:49
【问题描述】:
我有一个选择菜单供用户选择 3 种语言中的一种(英语、西班牙语和德语)。目标是,如果用户选择英语,则站点的所有内容都变为英语,其他语言也一样。
我有下面的代码,但它不起作用。出现missing required parameter for route site.translate。
语言控制器:
class LanguageController extends Controller
{
public function changeLanguage($language)
{
if(Session::has(locale)){
session()->set('locale', $language);}
else{
session()->set('locale', 'en');
}
return redirect()->back();
}
}
HTML:
<div class="col-6 col-lg-3 pt-4 pb-4">
<div class="footer-list">
<h3>Language</h3>
<form method="get" action="{{route('site.translate')}}">
{{csrf_field()}}
<select name="language" class="form-control font-weight-normal text-gray" id="exampleFormControlSelect1">
<option selected class="selected" value="de">German</option>
<option value="en">English</option>
<option value="de">German</option>
<option value="es">Spanish</option>
</select>
</form>
</div>
</div>
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);
}
}
路线:
Route::get('lang/{language}', [
'uses' => 'LanguageController@changeLanguage',
'as' =>'site.translate'
]);
【问题讨论】:
-
您的路线似乎缺少参数。它需要看起来像这样
route('post.show', ['post' => 1]);你能告诉我们你的 trainslate 网络路线吗?