嗨,我正在使用 Laravel 5 的中间件,我正在做的是我有几个控制器中使用的中间件,我的每个控制器都有自己的配置,我需要传递我的中间件,我该怎么做?
问问题
202 次
1 回答
0
如果您在“堆栈”(App/Http/Kernel.php
在$middleware
数组中定义)中使用此中间件,则您没有可用的 $request->route()。
但是,如果您在routes.php
文件中使用它作为单个路由或一组路由的中间件,您可以这样做:
根据需要创建一个配置文件,配置项以每个路由的相同名称命名,然后在您的中间件中获取路由名称并加载正确的配置。
抱歉,如果混淆了,想象一下这段代码:
Config/permissions.php
<?php
return [
// Route name here
'user.index' =>
// Your route options here
[
'option_a' => true,
'option_b' => false,
],
'user.edit' =>
[
'option_a' => true,
'option_b' => true,
],
/* ... */
];
?>
因此,在您的中间件handle
功能中,您可以执行以下操作:
public function handle($request, Closure $next)
{
$route = $request->route()->getName();
/* Check if there is a permission to this route in config file */
if (\Config::get("permissions.{$route}")) {
$options = \Config::get("permissions.{$route}");
/* Here will be your options by route */
/* Now it's up to you do what you want */
} else {
/* If not, use default options */
}
return $next($request);
}
顺便说一句,我建议您使用 Laracast 讨论论坛:
www.laracast.com/discuss
于 2015-03-17T21:08:25.687 回答