Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 翻译站点:缺少路由所需的参数_Php_Laravel - Fatal编程技术网

Php 翻译站点:缺少路由所需的参数

Php 翻译站点:缺少路由所需的参数,php,laravel,Php,Laravel,我有一个选择菜单供用户选择3种语言中的一种(英语、西班牙语和德语)。目标是,如果用户选择英语,则站点的所有内容都将更改为英语,其他语言的内容也将更改为英语 我有下面的代码,但它不工作。似乎缺少路线站点所需的参数。请翻译 语言控制器: class LanguageController extends Controller { public function changeLanguage($language) { if(Session::has(locale)){

我有一个选择菜单供用户选择3种语言中的一种(英语、西班牙语和德语)。目标是,如果用户选择英语,则站点的所有内容都将更改为英语,其他语言的内容也将更改为英语

我有下面的代码,但它不工作。似乎
缺少路线站点所需的参数。请翻译

语言控制器:

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
not
GET

所以,还是做些类似的事情吧

路线:

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。Do
dd($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();
    }
}