为什么我在 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;
    });
}