Skip to content
Anton edited this page May 19, 2015 · 13 revisions

Описание

с версии 0.6.0 выделен в отдельный пакет со своим набором помощников

Верхний уровень двухуровневого шаблонизатора

Настройки

"layout" => array(
"path" => PATH_APPLICATION .'/layouts',
"template" => 'index.phtml',
"helpersPath" => PATH_APPLICATION .'/layouts/helpers'
)

Использование

с версии 0.6.0 изменился способ вызова - теперь только через Proxy

В большинстве функций аналогичное View, а так же добавлен trait Container\RegularAccess для работы через Proxy:

Layout::set('foo', 'bar');

Отключение Layout из контроллера:

$this->useLayout(false);

Layout Helpers

Layout наследует все помощники View, и добавляет ряд своих.

breadCrumbs

Синтаксис:

Layout::breadCrumbs(array $data = [])

Установка/получение списка "хлебных крошек":

// controller
Layout::breadCrumbs([
Layout::ahref('Dashboard', ['dashboard', 'index']),
'ACL'
]);
<!-- layout -->
<?phpif (Layout::breadCrumbs()): ?>
<ul class="breadcrumb">
<?phpforeach (Layout::breadCrumbs() as$crump): ?>
<li>
<span class="divider">/</span> <?phpecho$crump?>
</li>
<?phpendforeach; ?>
</ul>
<?phpendif; ?>

headScript

Синтаксис:

Layout::headScript($script = null)

Добавляет указанный скрипт в стек, дабы в дальнейшем вставить его в тег <head> layout'а, можно вызывать из контроллера и шаблонов. Без параметров возвращает код тега <script> для вставки, и очищает стек. Если [Layout] отсутствует (это может быть AJAX запрос), то вызов скрипта вернёт код тега <script>:

<!-- layout -->
<head>
<?=Layout::headScript()?>
</head>
<!-- view -->
<?=Layout::headScript('js/jquery.js')?><?=Layout::headScript('$.ready(function(){ // la-la-la})')?>

Результат:

<!-- result --><head><scriptsrc="js/jquery.js"></script><scripttype="text/javascript">
<!--
$.ready(function(){// la-la-la})//--></script></head>

headStyle

Синтаксис:

Layout::headStyle(string $style = null, $media = 'all')

Назначение аналогично headScript, но применительно к CSS стилям.

meta

Синтаксис:

Layout::meta(string $name = null, string $content = null)

Добавление meta тегов в тег <head>, если layout отключен, то вернётся пустая строка:

// controller or view
Layout::meta('keywords', $page->keywords);
Layout::meta('description', $page->description);
<!-- layout -->
<head>
<?=Layout::meta()?>
</head>

link

Синтаксис:

$this->link(string $src = null, string $rel = 'stylesheet')

Добавление link тегов в тег <head>, если layout отключен, то вернётся пустая строка:

Layout::link(['rel'=>"profile", 'href'=>"http://gmpg.org/xfn/11"]);
<!-- layout -->
<head>
<?=Layout::link()?>
</head>

title

Синтаксис:

Layout::title(string $title = null, string $position = 'replace', string $separator = ' :: ')

Изменяет заголовок HTML (тот что в теге <head>), можно заменить существующий заголовок, или добавить в начало, либо конец текущего:

// controller
Layout::title('Hello', View::POS_PREPEND);
// view
Layout::title('World', View::POS_APPEND, '');
// layout
Layout::title();

Clone this wiki locally