首页 > 解决方案 > 将 Blade 片段从一个 Laravel 包推送到另一个“父”包

问题描述

我已经创建了一个私有核心 CMS 包,并且正在创建子包以根据需要添加其他功能。

所以在核心 CMS 包中,我有一个观点:

<ul class="nav">
   @stack('navigation')
</ul>

另一个带有核心导航项目的视图:

@push('navigation')

    <li class="nav-item">
        <a class="nav-link" href="{{route('admin.pages.index')}}"><i class="fa fa-book"></i>
            Pages</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{route('admin.news.index')}}"><i class="fa fa-newspaper"></i>
            News</a>
    </li>

@endpush

所以我想做的(如果可能的话)是从另一个包添加到@stack。例如:

@push('navigation')
    <li class="nav-item">
        <a class="nav-link" href="{{route('admin.events.index')}}"><i class="fa fa-calendar-day"></i>
            Events</a>
    </li>
@endpush

这不像我猜测的那样工作,因为我猜$this->loadViewsFrom(__DIR__ . '/views', 'cms');可能没有使用相同的命名空间进行处理和运行。有没有办法做到这一点?我考虑过将所有导航项添加到数据库表中,然后将种子添加到包和安装命令中,但我认为这将是一种更优雅的方式。

谢谢

标签: phplaravellaravel-5laravel-blade

解决方案


我最终创建了一个表格来处理管理导航。

核心 CMS 实现了初始导航,然后我在包上创建了一个安装命令,根据需要添加到导航表中:)


推荐阅读