使用相同视图名称的不同主题的Laravel视图生成器正在相互覆盖

使用相同视图名称的不同主题的Laravel视图生成器正在相互覆盖,laravel,laravel-6,Laravel,Laravel 6,我们正在利用视图生成器来帮助清理控制器。我们还使用了多个主题(iGater/laravel主题)。我们在使用视图生成器时遇到的问题是,有些页面具有相同的视图名称,因此应用了错误的视图生成器 以下是两个数据完全不同的独立主页(因为它们是两个完全不同的平台): /参考资料/themes/platform-1-theme/pages/index.blade.php /参考资料/themes/platform-2-theme/pages/index.blade.php 因此,它们都共享视图名称:“p

我们正在利用视图生成器来帮助清理控制器。我们还使用了多个主题(iGater/laravel主题)。我们在使用视图生成器时遇到的问题是,有些页面具有相同的视图名称,因此应用了错误的视图生成器

以下是两个数据完全不同的独立主页(因为它们是两个完全不同的平台):

  • /参考资料/themes/platform-1-theme/pages/index.blade.php
  • /参考资料/themes/platform-2-theme/pages/index.blade.php
因此,它们都共享视图名称:“pages.index”

我们的Composer ServiceProvider.php如下所示:

public function boot()
{
    View::composer(['pages.index'], 'App\Http\ViewComposers\Platform-1-ViewComposer');
    View::composer(['pages.index'], 'App\Http\ViewComposers\Platform-2-ViewComposer');
}
显然,这是一个问题,因为两个作曲家都将加载到主页,即使他们是两个不同的平台。有没有一种方法可以有条件地只加载我们想要的一个?就我们所知,中间件似乎不能与视图生成器一起工作


编辑:

根据要求,以下是视图文件夹的目录结构:

  • 资源/
    • 观点/
      • 公司/
        • breadcrumbs.blade.php
        • comments.blade.php
        • login-form.blade.php
        • message.blade.php
      • 页数/
        • 管理员/
        • 帐目/
    • 主题/
      • _父母/
        • 平台1父主题/
          • 公司/
            • footer.blade.php
            • header.blade.php
          • 页数/
            • index.blade.php
            • news.blade.php
            • inventurey.blade.php
        • 平台2父主题/
          • 公司/
            • footer.blade.php
            • header.blade.php
          • 页数/
            • index.blade.php
            • news.blade.php
            • points.blade.php
      • 客户1/
        • 客户端1-平台1-儿童主题/
          • 公司/
            • header.blade.php
          • 页数/
        • 客户端1-平台2-儿童主题/
          • 公司/
            • header.blade.php
          • 页数/
      • 客户2/
        • 客户端2-平台1-儿童主题/
          • 公司/
            • header.blade.php
          • 页数/
            • custompage.blade.php
        • 客户端2-平台2-儿童主题/
          • 公司/
            • header.blade.php
          • 页数/
            • 另一个CustomPage.blade.php

“我的客户端”文件夹扩展了父主题,/resources/views/文件夹用于跨所有平台使用的全局刀片模板。因此,Laravel当前首先在子主题中查找视图,如果在父主题中找不到,则在父主题中查找,如果仍在父主题中找不到,则在/resources/views/folder中查找最后一个视图。

因为您有不同的视图和不同的数据,所以有几个视图是有意义的。
共享同一个名字并不意味着他们需要共享同一个作曲家,您可以为每个人注册不同的作曲家。

如果我理解正确,这正是我要做的。上面的代码示例在CompositeServiceProvider中注册了两个不同的视图生成器,对吗?它们具有相同的视图名称(只是在不同的主题文件夹中)。但是,当它们共享相同的视图名称时,如何为它们注册不同的视图名称呢?谢谢你能分享
视图
文件夹的目录结构吗?@ab.in-我刚刚把它添加到上面的问题中。谢谢