无法在 Laravel 5.2 中的中间件中注入依赖项
Unable to inject dependency in Middleware in Laravel 5.2
我正在使用 Laravel 5.2 开发 Web 应用程序。我知道 Laravel 支持依赖注入。我在中间件中这样做。但是没有注入依赖项,并且注入的 class 的实例始终为空。这就是我所做的。
这是我的中间件
class StoreMiddleware
{
private $categoryRepo;
function __construct(CategoryRepo $categoryParam)
{
$categoryRepo = $categoryParam;
}
public function handle($request, Closure $next)
{
$categories = $this->categoryRepo->getTreeViewCategories();
view()->share(['categories'=>$categories]);
return $next($request);
}
}
我在内核中这样声明
protected $routeMiddleware = [
.
.
.
'store' =>\App\Http\Middleware\StoreMiddleware::class
];
我这样配置路由
Route::group(['middleware'=>'store'],function(){
Route::get('home','HomeController@index');
Route::get('/','HomeController@index');
});
当我访问主页时,出现此错误
FatalThrowableError in StoreMiddleware.php line 20:
Call to a member function getTreeViewCategories() on null
如您所见,它表示 categoryRepo 为 null 并且未被注入。
这是我在 CategoryRepo 模型中的 getTreeViewCategories() 方法。
function getTreeViewCategories()
{
$items = array();
return $items;
}
如您所见,我在模型中什么也没做,只是为了确保注入是否有效。我的代码有什么问题?
您没有在此处分配对象 属性:
function __construct(CategoryRepo $categoryParam)
{
$categoryRepo = $categoryParam;
}
改成这样:
function __construct(CategoryRepo $categoryParam)
{
$this->categoryRepo = $categoryParam
}
我正在使用 Laravel 5.2 开发 Web 应用程序。我知道 Laravel 支持依赖注入。我在中间件中这样做。但是没有注入依赖项,并且注入的 class 的实例始终为空。这就是我所做的。
这是我的中间件
class StoreMiddleware
{
private $categoryRepo;
function __construct(CategoryRepo $categoryParam)
{
$categoryRepo = $categoryParam;
}
public function handle($request, Closure $next)
{
$categories = $this->categoryRepo->getTreeViewCategories();
view()->share(['categories'=>$categories]);
return $next($request);
}
}
我在内核中这样声明
protected $routeMiddleware = [
.
.
.
'store' =>\App\Http\Middleware\StoreMiddleware::class
];
我这样配置路由
Route::group(['middleware'=>'store'],function(){
Route::get('home','HomeController@index');
Route::get('/','HomeController@index');
});
当我访问主页时,出现此错误
FatalThrowableError in StoreMiddleware.php line 20:
Call to a member function getTreeViewCategories() on null
如您所见,它表示 categoryRepo 为 null 并且未被注入。
这是我在 CategoryRepo 模型中的 getTreeViewCategories() 方法。
function getTreeViewCategories()
{
$items = array();
return $items;
}
如您所见,我在模型中什么也没做,只是为了确保注入是否有效。我的代码有什么问题?
您没有在此处分配对象 属性:
function __construct(CategoryRepo $categoryParam)
{
$categoryRepo = $categoryParam;
}
改成这样:
function __construct(CategoryRepo $categoryParam)
{
$this->categoryRepo = $categoryParam
}