Nano Hash - криптовалюты, майнинг, программирование

Компоновщики представлений Laravel для разных тем, которые используют одни и те же имена представлений, перезаписывают друг друга

Мы используем композиторы представлений, чтобы очистить наши контроллеры. Мы также используем несколько тем (igaster / laravel-theme). Проблема, с которой мы сталкиваемся с композиторами представлений, заключается в том, что у нас есть несколько страниц с одинаковым именем представления, поэтому применяется неправильный композитор представления.

Вот две отдельные домашние страницы с очень разными данными (потому что это две совершенно разные платформы):

  • /resources/themes/platform-1-theme/pages/index.blade.php
  • /resources/themes/platform-2-theme/pages/index.blade.php

Таким образом, у них обоих одинаковое имя представления: "pages.index"

Наш ComposerServiceProvider.php выглядит примерно так:

public function boot()
{
    View::composer(['pages.index'], 'App\Http\ViewComposers\Platform-1-ViewComposer');
    View::composer(['pages.index'], 'App\Http\ViewComposers\Platform-2-ViewComposer');
}

Очевидно, это проблема, потому что оба композитора будут загружены для домашней страницы, даже если это две разные платформы. Есть ли способ условно загрузить только тот, который нам нужен? Насколько мы можем судить, промежуточное ПО не работает с композиторами представлений.


редактировать:

По запросу, вот структура каталогов папки представлений:

  • resources/
    • views/
      • inc/
        • breadcrumbs.blade.php
        • comments.blade.php
        • логин-form.blade.php
        • message.blade.php
      • pages/
        • admin/
        • учетная запись/
    • themes/
      • _parents/
        • platform1-parent-theme/
          • inc/
            • footer.blade.php
            • header.blade.php
          • pages/
            • index.blade.php
            • news.blade.php
            • itinerary.blade.php
        • platform2-parent-theme/
          • inc/
            • footer.blade.php
            • header.blade.php
          • pages/
            • index.blade.php
            • news.blade.php
            • points.blade.php
      • client1/
        • client1-platform1-child-theme/
          • inc/
            • header.blade.php
          • страницы /
        • client1-platform2-child-theme/
          • inc/
            • header.blade.php
          • страницы /
      • client2/
        • client2-platform1-child-theme/
          • inc/
            • header.blade.php
          • pages/
            • custompage.blade.php
        • client2-platform2-child-theme/
          • inc/
            • header.blade.php
          • pages/
            • anothercustompage.blade.php

Мои клиентские папки расширяют родительскую тему, а папка / resources / views / предназначена для глобальных шаблонов лезвий, используемых на всех платформах. Итак, Laravel в настоящее время сначала ищет представление в дочерних темах, и если он не находит его там, он ищет в своей родительской теме, а если он все еще не находит его там, он ищет его последним в / resources / views / папка.

26.03.2020

  • Вы можете поделиться структурой каталогов views папки? 22.04.2020
  • @ ab.in - Я просто добавил это к вопросу выше. Спасибо. 22.04.2020

Ответы:


Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..