Sign up to our newsletter to receive updates on Winter CMS releases,
new features in the works, and much more.
We'll never spam or give this address away.
Back-end partials are files with the extension htm that reside in the controller's views directory. The partial file names should start with the underscore: _partial.htm. Partials can be rendered from a back-end page or another partial. Use the controller's
makePartial method to render a partial. The method takes two parameters - the partial name and the optional array of variables to pass to the partial. Example:
<?= $this->makePartial('sidebar', ['showHeader' => true]) ?>
You can render informative panels in the backend, called hints, that the user can hide. The first parameter should be a unique key for the purposes of remembering if the hint has been hidden or not. The second parameter is a reference to a partial view. The third parameter can be some extra view variables to pass to the partial, in addition to some hint properties.
<?= $this->makeHintPartial('my_hint_key', 'my_hint_partial', ['foo' => 'bar']) ?>
You can also disable the ability to hide a hint by setting the key value to a null value. This hint will always be displayed:
<?= $this->makeHintPartial(null, 'my_hint_partial') ?>
The following properties are available:
|type||Sets the color of the hint, supported types: danger, info, success, warning. Default: info.|
|title||Adds a title section to the hint.|
|subtitle||In addition to the title, adds a second line to the title section.|
|icon||In addition to the title, adds an icon to the title section.|
If you're using hints, you may find it useful to check if the user has hidden them. This is easily done using the
isBackendHintHidden method. It takes a single parameter, and that's the unique key you specified in the original call to
makeHintPartial. The method will return true if the hint was hidden, false otherwise:
<?php if ($this->isBackendHintHidden('my_hint_key')): ?> <!-- Do something when the hint is hidden --> <?php endif ?>
Back-end layouts reside in an optional layouts/ directory of a plugin. A custom layout is set with the
$layout property of the controller object. It defaults to the system layout called
/** * @var string Layout to use for the view. */ public $layout = 'mycustomlayout';
Layouts also provide the option to attach custom CSS classes to the BODY tag. This can be set with the
$bodyClass property of the controller.
/** * @var string Body CSS class to add to the layout. */ public $bodyClass = 'compact-container';
These body classes are available for the default layout:
Layouts can also be used in the same way as partials, acting more like a global partial. The system provides an example of this called
form-with-sidebar and demonstrates a novel way to implement a child layout structure.
Before using this layout style, ensure that your controller uses the body class
compact-container by setting it in your controller's action method or constructor.
$this->bodyClass = 'compact-container';
This layout uses two placeholders, a primary content area called form-contents and a complimentary sidebar called form-sidebar. Here is an example:
<!-- Primary content --> <?php Block::put('form-contents') ?> Main content <?php Block::endPut() ?> <!-- Complimentary sidebar --> <?php Block::put('form-sidebar') ?> Side content <?php Block::endPut() ?> <!-- Layout execution --> <?php Block::put('body') ?> <?= Form::open(['class'=>'layout stretch']) ?> <?= $this->makeLayout('form-with-sidebar') ?> <?= Form::close() ?> <?php Block::endPut() ?>
The layout is executed in the final section by overriding the body placeholder used by every back-end layout. It wraps everything with a
<form /> HTML tag and renders the child layout called form-with-sidebar. This file is located in