MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

Файлы и изображения

В MV существуют 3 типа данных для хранение файлов:

  1. file - одиночный файл
  2. image - одиночное изображение
  3. multi_images - массив изображений с комментариями

В базе данных хранятся пути к файлам от корня проекта без начального слэша. Файлы типа file хранятся в папках userfiles/models/название_модели-files/. Все изображения моделей находятся в папках вида userfiles/models/название_модели-images/. При загрузке на сервер, в случае дублировании названий, каждому файлу присваивается уникальный номер.

Уменьшенные копии изображений создаются в подпапках, при этом название подпапки задается автоматически, основываясь на размерах и названии текущей модели, например userfiles/models/gallery-images/gallery_70x70/name-of-image.jpg.

Вывод файлов для скачивания и изображений

  • displayFileLink($field [, $link_text, $no_file_text]) - возвращает ссылку на файл для скачивания

    $link_text - название файла для вставки в ссылку (если отсутствует, то будет поставлено название самого файла)
    $no_file_text - если файл отсутствует и задан данный параметр то будет выведен этот текст

  • displayImage($field,  [, $extra_params]) - возвращает тег img с данным изображением

Уменьшение и обрезка изображений

  • cropImage($image, $width, $height [, $extra_params]) - уменьшение изображения до заданных размеров с обрезкой
  • resizeImage($image, $width, $height [, $extra_params]) - пропорциональное уменьшения изображения без обрезки

Методы cropImage() и resizeImage() могут вызываться из объекта модели или из объекта класса Record, при этом они создают папку для уменьшенных копий, основываясь на принадлежности файла к определенной модели.

Дополнительные параметры могут быть переданы в виде ассоциированного массива $extra_params. Возможные варианты параметров (ключи): 'alt-text', 'no-image-text', 'title', 'css-class'. Ни один из параметров не является обязательным. При передаче параметра он будет добавлен к тэгу img.

Работа с массивом изображений

  • extractImages($field) или asArrays($field) - преобразование в массив изображений
  • getFirstImage($field) - извлечение первого изображения из массива

Создадим модель и извлечем в шаблонах нужные данные.

class Products extends Model 
{
    protected $name = 'Товары';

    protected $model_elements = [
        ['Название', 'char', 'name', ['required' => true]],
        ['Главное изображение', 'image', 'main_image'],
        ['Дополнительные изображения', 'multi_images', 'extra_images'],
        ['Инструкция', 'file', 'manual'],
        ['Описание', 'text', 'text_description']
    ];
}

Выводим список всех товаров с изображениями для общего шаблона, файл models/products.model.php.

<?
public function display()
{
    $rows = $this -> select();
    $html = '';

    foreach($rows as $row)
    {
        $url = $this -> root_path.'product/'.$row['id'];

        $html .= '<div>';
        $html .= '<div class="name"><a href="'.$url.'">'.$row["name"].'</a></div>';
        $html .= '<div class="image">';
        $html .= $this -> cropImage($row["main_image"], 150, 150, ['alt-text' => $row['name']]).'</div>';
        $html .= '<div class="description">';
        $html .= Service::cutText($row["text_description"], 200, "...").'</div>';
        $html .= '</div>';
    }

    return $html;
}

Выводим список инструкций товаров, у которых они есть, файл models/products.model.php.

<?
public function displayManuals()
{
    $rows = $this -> select(['manual!=' => '']);
    $html = '';
 
    foreach($rows as $row)
    {
        $html .= '<div class="dowload-file">';
        $html .= '<a href="'.Service::addFileRoot($row['manual']).'">'.$row['name'].'</a>';
        $html .= '</div>';
    }
 
    return $html;
}

На странице товара выводим все доступные данные, файл views/view-product.php.

<?
$product = $mv -> products -> defineProductPage($mv -> router);
$mv -> display404($product);
 
include $mv -> views_path.'main-header.php';
?>
<div id="content">
    <h1><? echo $product -> name; ?></h1>
    <div id="main-picture">
        <a class="lightbox" href="<? echo $mv -> root_path.$product -> main_image; ?>">
            <? echo $mv -> products -> resizeImage($product -> main_image, 300, 250); ?>
        </a>
    </div>
    <div id="extra-pictures">
        <?
            foreach($product -> extractImages('extra_images') as $image)
            {
               echo '<a class="lightbox" href="'.$mv -> root_path.$image['image'].'">';
               echo $mv -> products -> cropImage($image, 100, 100).'</a>';
            } 
        ?>
    </div>
    <p><? echo $product -> text_description; ?></p>
    <p><? echo $product -> displayFileLink('manual', 'Скачать инструкцию');  ?></p>
</div>
<?
include $mv -> views_path.'main-footer.php';
?>

Предыдущий раздел

Объект класса Record

Следующий раздел

Дата и время
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться