создать общий колонтитул для всех модулей в yii2 - PullRequest
0 голосов
/ 06 июня 2018

Я построил приложение на платформе Yii2, где оно имеет следующую структуру

assets/
config/
controllers/
models/
modules/
   |
    -- module-1 
          |
           - controllers
           - models
           - views
               |
               - header.php
               - footer.php
    -- module-2 
          | 
          - controllers
          - models
          - views
              |
               - header.php
               - footer.php
views/
  |
  - layouts/
       |     
       - header.php
       - footer.php
       - main.php
web/    

Мое приложение имеет 3 модуля, в которых 2 построены как модули и называются так, а 1 модуль использует значение по умолчанию Yii2контроллер, модели, структура представлений и так называемый , но все 3 имеют одинаковый нижний колонтитул, но расположены и вызываются из 3 разных мест приложения, как показано в приведенной выше структуре. Если пользователь хочет отредактировать верхний или нижний колонтитул, он должен изменить один и тот же код в 3 разных местах, что не очень хорошая практика, поэтому я хочу, чтобы все 3 модуля имели общий нижний колонтитул. Iпогуглил решение, но не нашел правильного ответа, я новичок в Yii Framework.Может кто-нибудь сказать, пожалуйста, как этого добиться?Благодарю.

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Если у вас разные макеты в вашем модуле, но все макеты рисуют один и тот же верхний и нижний колонтитулы, вы можете использовать псевдонимы в каждом из макетов, чтобы напрямую указывать на необходимые виды.

<?php echo $this->render('@app/views/layouts/header'); ?>

и

<?php echo $this->render('@app/views/layouts/footer'); ?>

Это только в случае, если разные макеты .. В противном случае ответ @vishuB подходит

0 голосов
/ 06 июня 2018

Вы можете использовать макеты просмотра по умолчанию.Нет необходимости создавать папку views / layouts в вашем модуле.

Просто поместите все файлы в папку frontend / views / layouts.

0 голосов
/ 06 июня 2018

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

Создать FooterWidget и HeaderWidget, который отображает ваши представления и вызывает егов макетах:

<?= HeaderWidget::widget() ?>

А при необходимости настройки:

<?= HeaderWidget::widget([
    'facebookUrl' => 'someURL',
]) ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...