-
Notifications
You must be signed in to change notification settings - Fork 39
View
Двухуровневый шаблонизатор (View- первый, Layout- второй) с нативным синтаксисом PHP, схож с Zend_View + Zend_Layout.
Глобальных настроек нет
В контроллере назначаем переменный в шаблон с использованием метода assign()
либо вернув массив переменных:
/**
* @return void
*/
return function() {
$this->assign('title', "Hello world");
return [
'keywords' => ['hello', 'world'],
'description' => 'first message'
];
};
В шаблоне выводим данные:
<h2><?=$title?></h2>
<p>Follows code works too</p>
<h2><?=$this->title?></h2>
<p><?=$description?></p>
Для экранирования данных используем глобальную функцию esc()
:
<p><?=esc($description)?></p>
Назначаем переменную в Layout:
return
/**
* @return Response
*/
function() {
Layout::set('title', "Hello world");
};
Отключаем вывод из контроллера (отключаем и view
и layout
):
return
function() {
return false;
};
Отключаем view
(может понадобиться для backbone.js):
return
function() {
$this->disableView();
};
Отключаем layout
:
return
function() {
$this->disableLayout();
};
-
toArray()
- получение всех данных из View -
setFromArray(array $data)
- добавление данных скопом во View -
resetArray()
- очистка всех данных -
setPath($path)
- путь к шаблонам -
setTemplate($file)
- шаблон для отображения -
addPartialPath($path)
- путь к шаблонам-помощникам -
render()
- собственно метод который отвечает за вывод, он также вызывается в магических методах__toString
и__invoke
Синтаксис:
$this->ahref(\string $text, \string $href, array $attributes = [])
Создаёт ссылку <a>
:
- если
$href == null
, ссылка не будет построена - если ссылка является текущей, к классу ссылки будет прибавлен класс
on
<?=$this->ahref('Profile', '/users/profile/id/13', ['class'=>'button']);?>
<a href="/users/profile/id/13" class="button">Profile</a>
Второй параметр может быть опциями для помощника вида url()
:
<?=$this->ahref('Profile', ['users', 'profile', ['id'=>13]], ['class'=>'button']);?>
<a href="/users/profile/id/13" class="button">Profile</a>
Синтаксис:
$this->baseUrl($file = null)
Добавляет к переданному URL базовый URL системы, или просто возвращает baseUrl:
<base href="<?=$this->baseUrl()?>" />
<!-- or -->
<img src="<?=$this->baseUrl('redactor/logo.png')?>" alt="Logo"/>
<!-- by default baseUrl of system is equal to '/' -->
<img src="/radactor/logo.png" alt="Logo"/>
Синтаксис:
$this->controller(\string $controller = null)
Данный метод возвращает текущий контроллер, или сверяет текущий с запрашиваемым:
<?=$this->controller()?>
index
<?php if ($this->controller('index')) :?>
Home Page
<?php endif; ?>
Синтаксис:
$this->dispatch(\string $module, \string $controller, $params = array())
Запускает указанный контроллер с перечисленными параметрами, при этом параметры переданные в массиве имеют приоритет над параметрами из запроса, параметры запроса будут так же доступны в объекте Request:
// pages/index view
// url /pages/id/9
$this->dispatch('users', 'profile', ['id' => 42]);
// users/profile controller
$request->id == 42;
$request->getQuery('id') == 9; // HTTP only
Синтаксис:
$this->headScript(\string $script = null)
Добавляет указанный скрипт в стек, дабы в дальнейшем вставить его в тег <head>
шаблона.
Без параметров возвращает код тега <script>
для вставки, и очищает стек.
Если Layout отсутствует (это может быть AJAX запрос), то вызов скрипта вернёт код тега <script>
:
<!-- layout -->
<head>
<?=Layout::headScript()?>
</head>
<!-- view -->
<?=$this->headScript('js/jquery.js')?>
<?=$this->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>
Синтаксис:
$this->headStyle(\string $style = null, \string $media = 'all')
Назначение аналогично headScript, но применительно к CSS стилям.
Синтаксис:
$this->module($module = null)
Данный метод возвращает текущий модуль, или сверяет текущий с запрашиваемым:
<?=$this->module()?>
forum
<?php if ($this->module('forum')) :?>
Our Forum
<?php endif; ?>
Синтаксис:
$this->partial(\string $template, $params = array())
Вывод другого шаблона внутри нашего:
<?php $this->partial('/partial/table.phtml', array('rows' => $data)) ?>
Синтаксис:
$this->partialLoop(\string $template, $data = [], $params = [])
Вывод другого шаблона в цикле, который бегает по массиву $data, ключ массива будет передан в качестве переменной $partialKey
, значение массива в $partialValue
<?php $this->partialLoop('/partial/tr.phtml', $rows) ?>
Синтаксис:
$this->script(\string $src = null)
Формирует строку для подключения javascript-кода к HTML. Может подключать как внешние файлы, так и локальные, может оборачивать inline-скрипты:
<!-- view -->
<?php
$this->script('redactor/redactor.js');
$this->script('
require(["jquery", "bluz"], function($, bluz) {
bluz.ready(function(){
$("'.$selector.'").redactor('.$settings.');
});
});
');
?>
<!-- result -->
<script src="/redactor/redactor.js"></script>
<script type="text/javascript">
<!--
require(["jquery", "bluz"], function($, bluz) {
bluz.ready(function(){
$(".redactor").redactor({"autoresize":false});
});
});
//-->
</script>
Синтаксис:
$this->style(\string $style, $media = 'all')
Аналогично помощнику script()
, но уже касательно CSS.
Синтаксис:
$this->url(\string $module, \string $controller, array $params = [], boolean $checkAccess = false)
Формирует ссылку на указанный контроллер, согласно прописанных в системе роутов. Если указан флаг $checkAccess
то так же проверяет доступ по правилам описанных в ACL, в случае, если нет доступа - вернёт null
, что влияет на поведение помощника ahref, который в этом случае не построит ссылку.
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View