为什么我在 Laravel 中的扩展构造函数中没有看到结果
Why I didnt see the result in my extended constructor in Laravel
我有几个 class 延伸自摘要 class
Class MenuController 扩展自 SiteAdminController
我需要调用 MenuController 并接收经过身份验证的用户 ID
<?php
namespace App\Http\Controllers\SiteAdmin;
use App\Http\Categories;
use Illuminate\Http\Request;
use Gate;
use App\Category;
use App\Http\Controllers\MenuController;
use App\Site_categories;
use Auth;
class SiteAdminController extends \App\Http\SiteEntity implements Categories
{
protected $host;
public $user;
public function __construct()
{
parent::__construct();
$this->middleware('auth:admin');
}
protected function menu() {
return $data_nav['menu'] = MenuController::index('admin_categories');
}
另一个扩展自 SiteAdminCntroller
<?php
namespace App\Http\Controllers\SiteAdmin;
use Illuminate\Http\Request;
use Gate;
use Auth;
use App\Category;
class MenuController extends SiteAdminController
{
public $category_menu;
public $user_categories;
public $user;
public function __construct(Auth $auth)
{
//parent::__construct();
$this->user_categories=$this->CategoriesMenu();
$this->user=$auth::guard('admin')->user()->id;
dd($this->user);
//dd($this->user_categories);
}
我认为 MenuController 中的构造函数 运行 在 SiteAdminController 中的中间件之前
这就是为什么我有这样的错误
http://prntscr.com/hwfifx
请解释我做了什么才能看到 dd() 函数的结果?
我什至试图打电话给 parent::__construct
但它没有帮助
首先检查 class 是否看到另一个必须扩展的 class。
然后尝试以下方法(这只是示例):
class ConceptController extends \SiteAdminController {
public function __construct(SiteAdminController $siteAdmin) {
parent::__construct($siteAdmin);
}
}
构造函数中的代码在中间件之前运行是正确的:https://github.com/laravel/framework/issues/15072
解决这个问题的最简单方法是在控制器中使用 middleware
方法:
菜单控制器
public function __construct()
{
parent::__construct();
$this->middleware(function () {
$this->user_categories = $this->CategoriesMenu();
$this->user = auth()->guard('admin')->user()->id;
});
}
我有几个 class 延伸自摘要 class Class MenuController 扩展自 SiteAdminController 我需要调用 MenuController 并接收经过身份验证的用户 ID
<?php
namespace App\Http\Controllers\SiteAdmin;
use App\Http\Categories;
use Illuminate\Http\Request;
use Gate;
use App\Category;
use App\Http\Controllers\MenuController;
use App\Site_categories;
use Auth;
class SiteAdminController extends \App\Http\SiteEntity implements Categories
{
protected $host;
public $user;
public function __construct()
{
parent::__construct();
$this->middleware('auth:admin');
}
protected function menu() {
return $data_nav['menu'] = MenuController::index('admin_categories');
}
另一个扩展自 SiteAdminCntroller
<?php
namespace App\Http\Controllers\SiteAdmin;
use Illuminate\Http\Request;
use Gate;
use Auth;
use App\Category;
class MenuController extends SiteAdminController
{
public $category_menu;
public $user_categories;
public $user;
public function __construct(Auth $auth)
{
//parent::__construct();
$this->user_categories=$this->CategoriesMenu();
$this->user=$auth::guard('admin')->user()->id;
dd($this->user);
//dd($this->user_categories);
}
我认为 MenuController 中的构造函数 运行 在 SiteAdminController 中的中间件之前
这就是为什么我有这样的错误
http://prntscr.com/hwfifx
请解释我做了什么才能看到 dd() 函数的结果?
我什至试图打电话给 parent::__construct
但它没有帮助
首先检查 class 是否看到另一个必须扩展的 class。
然后尝试以下方法(这只是示例):
class ConceptController extends \SiteAdminController {
public function __construct(SiteAdminController $siteAdmin) {
parent::__construct($siteAdmin);
}
}
构造函数中的代码在中间件之前运行是正确的:https://github.com/laravel/framework/issues/15072
解决这个问题的最简单方法是在控制器中使用 middleware
方法:
菜单控制器
public function __construct()
{
parent::__construct();
$this->middleware(function () {
$this->user_categories = $this->CategoriesMenu();
$this->user = auth()->guard('admin')->user()->id;
});
}