在 Laravel 5.2 中通过控制器将变量从中间件传递到视图
Pass variable from middleware to view via controller in Laravel 5.2
您好,我正在尝试在 Laravel 5.2 中执行以下操作。
总结:通过控制器将一些变量从中间件传递给视图
详细说明:当客户登录后,无论他们想走什么路线,我们都需要检查他们是否完成了所有"setup steps"(每个步骤指的是不同的路线,例如一个可以是公司信息,另一个可能是产品设置等)。如果他们已完成所有设置步骤,则让他们继续他们选择的路线,否则我们将重定向到适当的 "setup steps" 路线,以他们尚未完成的路线为准。
所有客户端控制器运行同一个中间件,叫做NonSuperAdmin。我想将 "setup steps" 的检查放在这个中间件中,并根据需要从那里重定向。如果此中间件将客户端重定向到设置路由,我们需要通过适当的设置步骤控制器方法将 "incompleteSetupTasks" 集合传递到相关视图。
这可能吗?非常感谢任何帮助。
可以使用 Laravel Session
来存储和读取值吗?
如果这些参数为空,您可以通过设置步骤获取或post参数并使用中间件检查路由:
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);
}
或者直接在view中访问session数据
//inblade
<p>
Your html content
@foreach(Session::get('your_key' as $data)
//your stuff
@endif
</p>
您好,我正在尝试在 Laravel 5.2 中执行以下操作。
总结:通过控制器将一些变量从中间件传递给视图
详细说明:当客户登录后,无论他们想走什么路线,我们都需要检查他们是否完成了所有"setup steps"(每个步骤指的是不同的路线,例如一个可以是公司信息,另一个可能是产品设置等)。如果他们已完成所有设置步骤,则让他们继续他们选择的路线,否则我们将重定向到适当的 "setup steps" 路线,以他们尚未完成的路线为准。
所有客户端控制器运行同一个中间件,叫做NonSuperAdmin。我想将 "setup steps" 的检查放在这个中间件中,并根据需要从那里重定向。如果此中间件将客户端重定向到设置路由,我们需要通过适当的设置步骤控制器方法将 "incompleteSetupTasks" 集合传递到相关视图。
这可能吗?非常感谢任何帮助。
可以使用 Laravel Session
来存储和读取值吗?
如果这些参数为空,您可以通过设置步骤获取或post参数并使用中间件检查路由:
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);
}
或者直接在view中访问session数据
//inblade
<p>
Your html content
@foreach(Session::get('your_key' as $data)
//your stuff
@endif
</p>