繁体   English   中英

laravel 5.4向basecontroller数组添加新元素

[英]laravel 5.4 add new element to basecontroller array

我对laravel 5.4中的动态面包屑有疑问。 我不想为此使用包,所以我的问题是:

我写这样的基本控制器

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class BaseController extends Controller
{
    private $breadcrumbs;

    function __construct()
    {
        $this->breadcrumbs[] = [
            'title' => 'Home',
            'type' => 'route',
            'href' => 'admin.dashboard'
        ];

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

我在像这样的子控制器中使用它

<?php

namespace App\Http\Controllers\Admin\Management;

use Illuminate\Http\Request;
use App\Http\Controllers\Admin\BaseController;

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');
    }

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

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

面包屑局部视图呈现一个具有多个li> a标签的ul列表。 但这现在不起作用。

1。 为什么它不起作用?

2。 如何在basecontroller中的面包屑变量中添加新的面包屑数组元素并使用添加的last元素呈现完整部分?

请帮我 ?

(对不起,我英语不好)

父构造函数 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'
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM