Laravel 5.8:控制器和刀片之间的两次回合数据传递

时间:2019-07-02 15:01:32

标签: redirect laravel-5 controller laravel-blade

第二次将数据从控制器传递到刀片时,我得到了不确定的变量。

使用Laravel 5.8,我的MyController中有两个动作/方法。我必须从控制器传递数据才能查看。第一个动作正常(MyController @ action1-> Blade1),但是第二个失败(MyController @ action2-> Blade2)。

MyController:

public function action1()
{
  ...
  $varialbe1 = ... // everything set correctly here and got it in blade1
  return view('blade1', compact('variable1'));
}

public function action2(Request $request)
{
  ...
  $association = $request->input('association');
  return view('blade2', compact('association'));
}

刀片1

<form method="POST" action="{{ route('route2') }}">
@csrf

<div class="form-group row">
  <label for="association" class="col-md-4 col-form-label text-md-right">{{ __('Association') }}</label>

  <div class="col-md-6">
  <select required="required" id="association" class="form-control" name="association">
     <option></option>
     @foreach ($variable1 as $key => $val)
       <option value="{{ $key }}">{{ $val->id }}</option> 
    @endforeach
  </select>
 </div>
 </div>
    <div class="form-group row mb-0">
       <div class="col-md-8 offset-md-4">
          <button type="submit" class="btn btn-primary">
 {{ __('Submit') }}
         </button>
   </div>
 </div>
 </form>

路线

Route::post('/route2', 'MyController@action2')->name('route2');

刀片2(未定义变量:关联)

{{ $association }}

我尝试了不同的方法来获取MyController中的数据,以及尝试将数据传递给Blade2(也可以与action1配合使用),

$association = Input::get('association'); 

return redirect()->to('/route2')->with('association', $association); // where route2 load the view

2 个答案:

答案 0 :(得分:0)

我的路由文件似乎很好(上一篇文章中的MyController = LoginController)。这是我的route / web.php:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home'); 

Route::post('/route2', 'Auth\LoginController@action2')->name('route2'); 

答案 1 :(得分:0)

从另一个论坛解决。 应该将操作方法​​添加到中间件中的异常方法列表中,如下所示:

$this->middleware('guest')->except(['logout', 'action']);

由于控制器在构造函数中具有以下中间件:

$this->middleware('guest')->except('logout');

如果用户已经登录(在这种情况下),他们将被重定向到/ home,并且永远不会到达控制器方法。