一般来说,这应该是一个相当简单的问题。IT 应该与Stack Overflow上的以下问题非常相似
但是看到已经两年了,也许一些语法已经改变了。
我要做的就是将一个变量从中间件传递给控制器,所以我不会重复 mysql 查询。
这是我的中间件:
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$id = $request->user()->id;
$rr = $request->user()->isSuperAdmin();
if ($request->user()->isSuperAdmin()) {
$request->merge(['group' => 123]);
return $next($request);
}
echo "not admin";
}
}
所以中间件工作正常,如果我在中间件上使用 DD($request),我会在页面上看到我的组 => 123。(为了简单起见,现在是 123。)
所以我想将它传递给我的 AdminController:
<?php
namespace SleepingOwl\Admin\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use SleepingOwl\Admin\Form\FormElements;
use SleepingOwl\Admin\Form\Columns\Column;
use SleepingOwl\Admin\Display\DisplayTable;
use Illuminate\Contracts\Support\Renderable;
use SleepingOwl\Admin\Display\DisplayTabbed;
use Illuminate\Validation\ValidationException;
use SleepingOwl\Admin\Contracts\AdminInterface;
use SleepingOwl\Admin\Model\ModelConfiguration;
use Illuminate\Contracts\Foundation\Application;
use SleepingOwl\Admin\Contracts\Form\FormInterface;
use SleepingOwl\Admin\Contracts\ModelConfigurationInterface;
use SleepingOwl\Admin\Contracts\Display\ColumnEditableInterface;
class AdminController extends Controller
{
/**
* @var \DaveJamesMiller\Breadcrumbs\Manager
*/
protected $breadcrumbs;
/**
* @var AdminInterface
*/
protected $admin;
/**
* @var
*/
private $parentBreadcrumb = 'home';
/**
* @var Application
*/
public $app;
/**
* AdminController constructor.
*
* @param Request $request
* @param AdminInterface $admin
* @param Application $application
*/
public function __construct(Request $request, AdminInterface $admin, Application $application)
{
$this->middleware('CheckRole');
如您所见,我在此构造函数上调用了中间件。调用它后,我应该能够执行以下操作:
$request->get('group'); or $request->group;
在尝试了很长一段时间后,似乎没有任何效果,我一直得到一个空值。从根本上说,这应该不是非常困难,但我似乎关闭了我的语法或没有使用正确的名称空间?