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 -->
<?php if (Layout::breadCrumbs()): ?>
<ul class="breadcrumb">
<?php foreach (Layout::breadCrumbs() as $crump): ?>
     <li>
         <span class="divider">/</span> <?php echo $crump ?>
     </li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

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>
<script src="js/jquery.js"></script>
<script type="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();