Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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
通过Laravel 5.2中的控制器将变量从中间件传递到视图_Laravel_Parameters_Middleware - Fatal编程技术网

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

通过Laravel 5.2中的控制器将变量从中间件传递到视图,laravel,parameters,middleware,Laravel,Parameters,Middleware,您好,我正在尝试在Laravel 5.2中执行以下操作 概要:通过控制器将一些变量从中间件传递到视图 public function yourControllerAction($request) { $somevariable = Session::get('your_key'); $viewdata = [ 'content' => $somevariable ] return view('yourview', $viewdata); } 详细信

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

概要:通过控制器将一些变量从中间件传递到视图

public function  yourControllerAction($request)
{
   $somevariable = Session::get('your_key');
   $viewdata = [
      'content' => $somevariable
   ]
   return view('yourview', $viewdata); 
}
详细信息:当客户登录时,无论他们想要什么路线,我们都需要检查他们是否完成了所有“设置步骤”(每个步骤都指不同的路线,例如,一个可能是公司信息,另一个可能是产品设置等)。如果他们已经完成了所有的设置步骤,那么让他们继续他们选择的路线,否则我们将重定向到适当的“设置步骤”路线,无论哪一个他们还没有完成

所有客户端控制器都运行相同的中间件,称为非超级管理员。我想在这个中间件中检查“设置步骤”,并根据需要从那里重定向。如果此中间件将客户端重定向到设置路由,则需要通过适当的设置步骤控制器方法将“UncompleteSetupTasks”集合传递到相关视图


这可能吗?非常感谢您的帮助。

可能用于存储和读取值?

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

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

问号表示它们是可选参数。希望有帮助。

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

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>
//内置

您的html内容
@foreach(会话::get('your_key'作为$data)
//你的东西
@恩迪夫


我试过了,但失败了。也许我做得不对。请您给我一个基本的例子好吗?我给您提供了我的文档答案中的链接-有一些例子。但可能会把您的代码放在这里,我会查看。我从不在middelware中使用会话,所以我不能100%确定我的aboce建议是正确的-您必须检查它这里有一些很好的视频教程:,您可以在中间件内部返回重定向,这将极大地帮助您的控制器,将所有逻辑保持在它们之外,并包含在中间件内部。