【问题标题】:Laravel 5.8: Two round passing data between controller and bladeLaravel 5.8:控制器和刀片之间的两轮传递数据
【发布时间】:2019-11-13 06:26:27
【问题描述】:

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

在 Laravel 5.8 中,我在 MyController 中有两个动作/方法。我必须将数据从控制器传递到视图。第一个操作正常(MyController@action1 -> Blade1),但第二个操作失败(MyController@action2 -> Blade2)。

我的控制器:

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');

Blade 2(未定义变量:关联)

{{ $association }}

我尝试了不同的方法在 MyController 中获取数据,以及将数据传递给 Blade2 的不同方法(该方法也适用于 action1),包括:

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

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

【问题讨论】:

  • 试试dd($request-&gt;all())。它转储了什么?
  • 谢谢@alberto-bottarini 我注意到,route2 没有通过MyController@action2。相反,在验证后总是重定向到home。有吗?我还没找到可能是什么原因。
  • 你的 ruote 文件呢?
  • 我的路线看起来不错,如下图所示。

标签: redirect laravel-5 controller laravel-blade


【解决方案1】:

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

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

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

$this-&gt;middleware('guest')-&gt;except('logout');

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

【讨论】:

    【解决方案2】:

    我的路由文件看起来不错(上一篇文章中的 MyController = LoginController)。这是我的路线/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'); 
    

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 2017-09-03
      • 2016-06-25
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多