【问题标题】:Laravel redirect->back() return empty paramsLaravel redirect->back() 返回空参数
【发布时间】:2016-08-31 19:30:15
【问题描述】:

我有一个 index.blade.php 页面,我有一个显示警报成功或错误的代码:

    <!-- ALERTS -->
    @if (isset($msg))
        @if ($msg_type == 'error')
            <div id="alert" class="alert alert-danger" role="alert">{{ $msg }}</div>
        @else
            <div id="alert" class="alert alert-success" role="alert">{{ $msg }}</div>
        @endif
        <script>setTimeout("document.getElementById('mensajecarrito').style.display='none'",6000);</script>
    @endif
    <!-- //ALERTS -->

这个index有一个form,这个form url POST到post_designs url,这是他的controller方法:

public function postDesign() {

        if (Session::has('FUNCTION'))
                $function = Session::get('FUNCTION');

            if (Input::has('FUNCTION'))
                $function = Input::get('FUNCTION'); 

            if (isset($function))
            {           
                switch($function)
                {
                    case 'createDesign':   

                        try
                        {   
                            //do something good
                            $msg_type = 'success';                      
                            $msg = 'Design created successfully';     
                        }
                        catch(FotiApiException $e)
                        {
                            $msg_type = 'error';                    
                            $msg = 'Unexpected error';       
                        }

                    break;
                }                           
            }



        return back()->with(array('msg' => $msg, 'msg_type' => $msg_type));
    }

问题是,当返回我的 index.blade.php 时,$msg 和 $msg_type 变量是空的...

我不明白,我的项目是 Laravel 5.2.3,我有正确的路由中间件:

Route::group(['middleware' =>[ 'web']], function () {

    # Index
    Route::get('/',['as'=> 'index','uses' => 'WebController@getIndex']);

    // # POSTS
    Route::post('/post-design', ['as' => 'post_design', 'uses' => 'WebController@postDesign']);

});

【问题讨论】:

    标签: php laravel laravel-5.2


    【解决方案1】:

    功能

    return back()->with('msg', $msg)
    

    它不会将数据返回到通常的变量而不是

    request()->get("msg") or $msg
    

    返回数据到

    session()->get("msg")
    

    你可以用它来获取你需要的变量。

    【讨论】:

      【解决方案2】:

      你可以使用 withInput()

      return back()->withInput(array('msg' => $msg, 'msg_type' => $msg_type));
      

      会话中保存的数据 如果你想使用刀片中的数据。 尝试使用 old('msg') 或 old('msg_type')

      @if(old('msg'))
      <p>msg:{{ old('msg') }}<p>
      @endif
      

      php

      $msg = $request->old('msg');
      

      laravel requests old-input

      【讨论】:

        【解决方案3】:

        如果您想发送一些额外的 GET 参数,请按照以下说明操作。

        $previousUrl = app('url')->previous();
        
        return redirect()->to($previousUrl.'?'. http_build_query(['varName'=>'varValue']));
        

        它将使用 yoururl?varName=varValue 进行重定向,希望对您有所帮助!!

        【讨论】:

          【解决方案4】:

          而不是使用

          return back()->with('msg', $msg)->with('msg_type', $msg_type);
          

          使用

          return back()->withInput(['msg' => $msg, 'msg_type' => $msg_type]);
          

          【讨论】:

            【解决方案5】:

            我是 laravel 5.2 的新手,关于路线没有必要,但路线在

            ['middleware' =>[ 'web']]
            

            scene laravel 5.2 中的所有路由都在里面,所以尽量去掉


            并返回具有 2 个值的视图,尝试将其设为:

             return back()->with('msg', $msg)->with('msg_type', $msg_type);
            

            我希望能解决问题:)

            【讨论】: