Php 翻译站点:缺少路由所需的参数
我有一个选择菜单供用户选择3种语言中的一种(英语、西班牙语和德语)。目标是,如果用户选择英语,则站点的所有内容都将更改为英语,其他语言的内容也将更改为英语 我有下面的代码,但它不工作。似乎Php 翻译站点:缺少路由所需的参数,php,laravel,Php,Laravel,我有一个选择菜单供用户选择3种语言中的一种(英语、西班牙语和德语)。目标是,如果用户选择英语,则站点的所有内容都将更改为英语,其他语言的内容也将更改为英语 我有下面的代码,但它不工作。似乎缺少路线站点所需的参数。请翻译 语言控制器: class LanguageController extends Controller { public function changeLanguage($language) { if(Session::has(locale)){
缺少路线站点所需的参数。请翻译
语言控制器:
class LanguageController extends Controller
{
public function changeLanguage($language)
{
if(Session::has(locale)){
session()->set('locale', $language);}
else{
session()->set('locale', 'en');
}
return redirect()->back();
}
}
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:
问题是您的路线需要一个参数lang/{language}
执行表单发布时,不需要参数。此外,您需要将表单设置为POST
notGET
所以,还是做些类似的事情吧
路线:
Route::get('lang/{language}', [
'uses' => 'LanguageController@changeLanguage',
'as' =>'site.translate'
]);
Route::post('/lang', [
'uses' => 'LanguageController@changeLanguage',
'as' =>'site.translate'
]);
视图:
看起来您的路线缺少一个参数。它需要看起来像这样的route('post.show',['post'=>1])代码>你能给我们看一下你的trainslate web路线吗?谢谢,你知道为什么会出现“使用未定义的常量区域设置-假定的“区域设置”?@Carrick从调试控制器开始。在表单中添加一个普通的提交按钮,而不是jQuery。Dodd($request->language)在控制器中编写>以查看值是否从窗体传入。然后查看条件逻辑是否正确传递。@Carrick创建一个新问题,我将为您回答。$request->language根据所选的选择选项显示正确的结果“de”、“es”等。
Route::post('/lang', [
'uses' => 'LanguageController@changeLanguage',
'as' =>'site.translate'
]);
<div class="col-6 col-lg-3 pt-4 pb-4">
<div class="footer-list">
<h3>Language</h3>
<form method="post" 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>
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();
}
}