通过Laravel 5.2中的控制器将变量从中间件传递到视图

时间:2016-07-21 15:02:48

标签: laravel parameters middleware

您好我正在尝试在Laravel 5.2中执行以下操作。

总结:通过控制器

将一些变量从中间件传递到视图

详细说明:当客户登录时,无论他们想要什么路线,我们都需要检查他们是否已完成所有“设置步骤”(每个步骤指的是不同的路线,例如一个可能是公司信息,另一个可能是是产品设置等)。如果他们已经完成了所有设置步骤,那么让他们继续他们选择的路线,否则我们会重定向到相应的“设置步骤”路线,无论他们还没有完成。

所有客户端控制器都运行相同的中间件,称为NonSuperAdmin。我想在这个中间件中检查“设置步骤”,并在适当的时候从那里重定向。如果客户端被此中间件重定向到设置路由,我们需要通过适当的设置步骤控制器方法将“incompleteSetupTasks”集合传递到相关视图。

这可能吗?非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

在中间件使用会话处理程序

if($condition === true){
  $data = [ //your content ];
  Session::flash('your_key', $data);
}
next($request);

此数据也可在您的控制器和视图中使用

这是您可以如何访问控制器中的数据

public function  yourControllerAction($request)
{
   $somevariable = Session::get('your_key');
   $viewdata = [
      'content' => $somevariable
   ]
   return view('yourview', $viewdata); 
}

或直接访问视图中的会话数据

//inblade
<p>
  Your html content
  @foreach(Session::get('your_key' as $data)
     //your stuff
  @endif
</p>

答案 1 :(得分:1)

可以使用Laravel Session来存储和读取值吗?

答案 2 :(得分:0)

如果这些参数为空,您可以通过设置步骤获取或发布参数并使用中间件检入路由:

Route::get('post/{setup1?}/{setup2?}', ['middleware' => 'role:admin', function ($setup1, $setup2) {
    if(empty($setup1) and empty($setup2)){
        // do smth
    } else {
       // redirect
    }
}]);

问号意味着它们是可选参数。希望它有所帮助。