Представления и Фрагменты

October CMS Documentation Docs

Представления и Фрагменты

# Фрагменты

Фрагменты в административной части сайта - это файлы с расширением htm, которые находятся в папке с представлениями контроллера. Их название должно начинаться с _: _partial.htm. Фрагменты можно отобразить на административной странице или в другом фрагменте. Для этого используется метод makePartial(), который принимает два параметра - название фрагмента и массив с произвольными значениями. Пример:

<?= $this->makePartial('sidebar', ['showHeader' => true]) ?>

# Подсказки

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

<?= $this->makeHintPartial('my_hint_key', 'my_hint_partial', ['foo' => 'bar']) ?>

Вы можете запретить пользователям скрывать подсказку, указав в качестве первого параметра null. Пример:

<?= $this->makeHintPartial(null, 'my_hint_partial') ?>

Доступны следующие свойства:

Свойство Описание
type Цвет подсказки. Доступны следующие значения: danger, info, success, warning. По умолчанию: info.
title Заголовок подсказки.
subtitle Подзаголовок.
icon Добавляет иконку к заголовку.

# Проверка видимости подсказки

Используйте метод isBackendHintHidden, чтобы проверить скрыл ли пользователь подсказку. Метод принимает один параметр - уникальный ключ (название подсказки), который был указан в makeHintPartial. Возвращает true или false. Пример:

<?php if ($this->isBackendHintHidden('my_hint_key')): ?>
    <!-- Do something when the hint is hidden -->
<?php endif ?>

# Шаблоны и дочерние шаблоны

Шаблоны административных страниц могут находится в папке плагина в подпапке layouts/. Также объект контроллера может иметь свойство $layout. Значение по умолчанию - default.

/**
 * @var string Layout to use for the view.
 */
public $layout = 'mycustomlayout';

Вы можете указать произвольный класс тега BODY при помощи свойства контроллера $bodyClass.

/**
 * @var string Body CSS class to add to the layout.
 */
public $bodyClass = 'compact-container';

По умолчанию доступны следующие классы:

  • compact-container - убирает padding со всех сторон.
  • slim-container - убирает padding слева и справа.
  • breadcrumb-flush - хлебные крошки располагаются вплотную к следующему элементу.

# Форма с боковой панелью

Вы можете работать с шаблонами также как и с фрагментами. Пример:

$this->bodyClass = 'compact-container'; // Сначала добавим класс в контроллер

<!-- Форма -->
<?php Block::put('form-contents') ?>
    Main content
<?php Block::endPut() ?>

<!-- Боковая панель -->
<?php Block::put('form-sidebar') ?>
    Side content
<?php Block::endPut() ?>

<!-- Отображаем дочерний шаблон -->
<?php Block::put('body') ?>
    <?= Form::open(['class'=>'layout stretch']) ?>
        <?= $this->makeLayout('form-with-sidebar') ?>
    <?= Form::close() ?>
<?php Block::endPut() ?>

Последний блок с кодом переопределяет body и оборачивает все в HTML тег <form />, после чего отображает дочерний шаблон form-with-sidebar, который находится по следующему пути: modules\backend\layouts\form-with-sidebar.htm.