Laravel 5.4 将新元素添加到基本控制器数组



我有一个关于 Laravel 5.4 中的动态面包屑的问题。 我不想为此使用包,所以我的问题是:

我写一个这样的基本控制器

<?php
namespace AppHttpControllersAdmin;
use IlluminateHttpRequest;
use AppHttpControllersController;
class BaseController extends Controller
{
    private $breadcrumbs;
    function __construct()
    {
        $this->breadcrumbs[] = [
            'title' => 'Home',
            'type' => 'route',
            'href' => 'admin.dashboard'
        ];
        view()->share('breadcrumbs', $this->breadcrumbs);
    }
}

我像这样在儿童控制器中使用它

<?php
namespace AppHttpControllersAdminManagement;
use IlluminateHttpRequest;
use AppHttpControllersAdminBaseController;
class PackageController extends BaseController
{
    function __construct()
    {
        parent::__construct();
    }
    public function getList()
    {
        $this->breadcrumbs[] = [
            'title' => 'Packages',
            'type' => 'route',
            'href' => 'admin.package.list',
            'class' => 'active'
        ];
        return view('admin.layouts.package.list');
    }

我想在面包屑中使用此面包屑变量.blade.php母版页中的部分

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    @include('admin.layouts.shared.breadcrumb')
</body>
</html>

痕迹导航部分视图呈现 UL 列表具有多个 LI>A 标记。但这现在不起作用。

1.为什么它不起作用?

2 . 如何将新的面包屑数组元素添加到基本控制器中的面包屑变量中,并使用添加的最后一个元素渲染完整的部分?

请帮帮我 ?

(对不起,我的英语不好(

父构造函数getList()函数之前运行。这意味着以下内容已经运行:

view()->share('breadcrumbs', $this->breadcrumbs);

我很确定当您共享面包屑数组时,它会复制它,而不是留下对它的引用,以便您可以随时修改它。

为什么不在基本控制器中创建一个方法,例如:

public function setBreadcrumbs($breadcrumbs)
{
    $this->breadcrumbs = $breadcrumbs;
    view()->share('breadcrumbs', $this->breadcrumbs);
}

然后在getList()这样称呼它:

$this->setBreadcrumbs([
    'title' => 'Packages',
    'type' => 'route',
    'href' => 'admin.package.list',
    'class' => 'active'
]);

最新更新