Вывод данных в шаблоне
Шаблоны создаются для отображения данных из моделей. Сами модели доступны как объекты в главном объекте $mv и могут быть также инстанциированны отдельно. Для того чтобы вывести данные модели из базы данных можно пойти следующими путями.
Использование объекта Record
Данный класс предназначен для работы с извлеченными из базы данными. Создается объект обычно в результате вызова методов по поиску нужной записи, которая затем возвращается в объекте Record.
<?
$record = $mv -> pages -> find(['url' => 'about', 'active' => 1]);
?>
<div class="main">
<h1><? echo $record -> name; ?></h1>
<div><? echo $record -> title; ?></div>
<div><? echo $record -> getEnumTitle('parent'); ?></div>
<div class="text"><? echo $record -> content; ?></div>
</div>
Методы объекта модели
- resizeImage($image, $width, $height) - пропорциональное уменьшение изображения, возвращает тэг img
- cropImage($image, $width, $height) - уменьшение и обрезка изображения, возвращает тэг img (подробнее в разделе Файлы и изображения)
- extractImages($value) - извлечение изображений из поля типа multi_images, которые хранятся в базе данных в формате JSON
- getFirstImage($value) - извлечение первого изображения из массива изображения для типа multi_images
- getEnumValues($field) - возвращает массив (ключ - значение) значений поля типа enum
- getEnumTitle($field, $key) - возвращает значение (текст) по ключу поля типа enum
Предположим есть модель Новости. Создадим метод для отображения списка новостей.
class News extends Model
{
protected $name = 'Новости';
protected $model_elements = [
['Активировать', 'bool', 'active', ['on_create' => true]],
['Заголовок', 'char', 'name', ['required' => true]],
['Дата', 'date', 'date'],
['Содержание', 'text', 'content']
];
}
Необходимо вывести список новостей с заголовком и ссылкой на полный текст новости. Добавляем в модель News новый метод для вывода html.
<?
public function display()
{
//Извлекаем активные записи из базы данных
$rows = $this -> select(['active' => 1, 'order->desc' => 'date']);
//Переменная для сборки html кода
$html = '';
foreach($rows as $row)
{
//Ссылка на новость
$url = $this -> root_path.'news/'.$row['id'];
//Дата и заголовок новости, обернутый в ссылку
$html .= '<div>';
$html .= '<div class="date">'.I18n::formatDate($row['date']).'</div>';
$html .= '<a href="'.$url.'">'.$row['name'].'</a>';
$html .= '</div>';
}
return $html;
}
Вывод данных из простых моделей
Если модель относится к типу Простые модели, то данные извлекаются иным образом, т.к. таблица простой модели содержит всего 2 колонки: ключ и значение. Дополнительная информация содержится в разделе Управление простыми моделями.
class Options extends ModelSimple
{
protected $name = 'Параметры';
protected $model_elements = [
['Email для писем с сайта', 'email', 'email', ['required' => true]],
['Телефон', 'char', 'phone'],
['Слоган', 'text', 'slogan']
];
}
В шаблоне можно извлекать значения по ключам из объекта модели.
//Вывод данных в html шаблон
echo $mv -> options -> phone;
echo $mv -> options -> slogan;
Предыдущий раздел
Создание нового шаблона