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

Настройка модели

Для более тонкой настройки модели можно передать дополнительные параметры в свойстве $model_display_params в классе модели. Все опции действительны для административной панели и ее методов create(), update() и delete().

Пример списка всех настроек по умолчанию в базовом классе ModelBase.

protected $display_params = [
    'visible_fields' => '*',
    'hidden_fields' => [],
    'editable_fields' => '*',
    'not_editable_fields' => [],
    'create_actions' => true,
    'update_actions' => true,
    'delete_actions' => true,
    'mass_actions' => true,
    'fields_groups' => [],
    'default_table_columns' => [],
    'default_filters' => [],
    'show_empty_default_filters' => false,
    'redirects_to_models' => [],
    'foreign_keys_admin_links' => false,
    'versions_limit' => 'config'
];

Редактируемые и не редактируемые поля

editable_fileds - редактируемые поля модели, по умолчанию: '*' (все поля)

not_editable_fields - не редактируемые поля модели в административном интерфейсе, по умолчанию: пустой массив

Видимые и скрытые поля

visible_fields - видимые поля модели , по умолчанию: '*' (все поля)

hidden_fields - скрытые поля модели, в административном интерфейсе не отображаются, по умолчанию: пустой массив

Виртуальные поля

Возможность создания виртуальных полей, которые не участвуют в CRUD, описана в разделе текстового типа данных.

Операции создания, редактирования и удаления

create_actions - возможность создания записей модели в административной панели
update_actions - возможность редактирования записей модели в административной панели
delete_actions - возможность удаления записей модели в административной панели
mass_actions - возможность массового редактирования/удаления записей модели в административной панели

Все четыре параметра по умолчанию имеют значение true.

Группировка полей по вкладкам

Если в модели много полей, то можно разгруппировать их по вкладкам, при создании и редактировании записей в административном интерфейсе.

'fields_groups' => [
    'Основные параметры' => ['active', 'name', 'url'],
    'Тексты и изображения' => ['content', 'images']
];

Поля по умолчанию в общей таблице

default_table_columns - массив полей, которые выводятся в общей таблице до того момента, как пользователь сам установил свои настройки полей

'default_table_columns' => ['name', 'date', 'color', 'options']

Переход в другие модели

Для некоторых записей модели в административной панели можно задать возможность перехода в другие модели. Такая необходимость возникает, например, в модели 'Меню страниц', когда пункт 'Новости' присутствует в списке записей модели, но при этом сами новости располагаются в модели 'Новости'. Для удобства пользователей можно задать возможность при клике на ссылку 'Новости' переходить не на следующий уровень дерева, а в саму модель 'Новости'.


redirects_to_models - массив параметров для перехода в другие модели по прописанным признакам ['id'=32, 'url'='news', 'name'='Галерея']. Данная опция задействуется только в древовидных моделях, с полем типа ‘parent’.

'redirects_to_models' => [
    'url' => ['news' => 'News'], 
    'name' => ['Каталог' => 'Catalogs'],
    'id' => ['8' => 'Faq']
];

Ссылки на внешние ключи

Если данная опция задана, то в общей таблице записей в административной панели к полю со значением внешнего ключа будет добавлена ссылка для перехода на страницу редактирования записи данного значения внешнего ключа.

'foreign_keys_admin_links' => true

Ограничение на количество версий

При обновлении записей через административную панель старая версия записи сохраняется, и возможно произвести откат до прежних значений полей. Ограничение на количество хранимых версий одной записи задается опцией 'ModelVersionsLimit' в файле config/settings.php и по умолчанию составляет 25. Для каждой модели данное значение может быть изменено или полностью отключена возможность сохранять версии. При достижении лимита версий для записи, версии начинают удаляться, начиная с самой старой.

'versions_limit' => 30
'versions_limit' => 0

Настройка фильтров модели

default_filters - массив фильтров, которые видны по умолчанию до запуска фильтрации, если опция не задана, то выводятся первые 7 фильтров модели

show_empty_default_filters - если опция включена, фильтры по умолчанию будут отображаться в колонке даже если они не запущены, а другие при этом запущены

'default_filters' => ['price', 'name'],
'show_empty_default_filters' => true

Параметры именных полей

Используется когда в модели отсутствует поле с именем 'name'. Данное является полем имени записи, которое отображается в статистике, например в истории операций пользователей. Параметр $name_field указывает какое поле в модели считать именным. Также можно задать дополнительный параметр $name_field_extra, чтобы присоединить к названию записи значение еще одного поля.

Пример, модель клиентов для регистрации на сайте.

class Clients extends Model
{
    protected $name = 'Клиенты';
    
    protected $name_field = 'first_name';
    
    protected $name_field_extra = 'last_name';
    
    protected $model_elements = [
        ['Активация', 'bool', 'active'],
        ['Подтверждение региcтрации', 'bool', 'confirm'],
        ['Имя', 'char', 'first_name', ['required' => true]],
        ['Фамилия', 'char', 'last_name', ['required' => true]],
        ['Индивидуальный ключ', 'char', 'token']
    ];

    protected $model_display_params = [
        'editable_fields' => ['active', 'first_name', 'last_name'],
        'hidden_fields' => ['token'],
        'create_actions' => false,
        'delete_actions' => false,
        'fields_groups' => ['Основные параметры' => ['first_name','last_name'], 
                            'Прохождение регистрации' => ['active','confirm', 'token']],
        'default_table_columns' => ['first_name', 'last_name', 'active'], 
        'default_filters' => ['first_name', 'last_name']
    ];
}

Модификация отображения полей в таблице

Возможно изменить отображения поля в общей таблице путем создание м модели специального метода.

class Clients extends Model
{
    ...
    
    public function processAdminModelTableFields($field, $row)
    {
        if($field === 'last_name')
            return 'Фамилия: '.$row['last_name'];
    }
}

Событийные методы

Когда в административной части происходит создание, редактирование или удаление записи, могут быть вызваны специальные методы для проведения дополнительных операций над данными. Во всех методах $id - ключ текущей записи, $fields - ассоциированный массив полей записи вида ['name' => 'Maxim', 'age' => 27].

  • beforeCreate($fields) - метод вызывается перед созданием записи (id еще не существует)
  • afterCreate($id, $fields) - метод вызывается после создания записи (id уже получен после запроса INSERT)
  • beforeUpdate($id, $old_fields, $new_fields) - перед редактированием записи (старые и новые значения полей)
  • afterUpdate($id, $new_fields) - после редактирования записи (новые значения полей)
  • beforeDelete($id, $fields) - до удаления в корзину
  • afterDelete($id, $fields) - после удаления в корзину (записи в таблице модели уже нет)
  • beforeRestore($id, $fields) - до восстановления из корзины
  • afterRestore($id, $fields) - после восстановления из корзины
  • beforeFinalDelete($id, $fields) - до окончательного удаления из корзины
  • afterFinalDelete($id, $fields) - после окончательного удаления из корзины (записи в таблице корзины уже нет)

Методы beforeCreate и beforeUpdate могут возвращать массив измененных полей, которые будут записаны в базу данных и историю изменений. При этом, возвращаемый массив может содержать только те поля, которые были изменены внутри данного метода. В метод beforeUpdate на вход передаются старые и новые для сравнения значения полей записи. Смотрите примеры ниже.

Если beforeDelete() или beforeRestore() вернут значение false, операция по удалению (восстановлению) произведена не будет.

class Products extends Model
{
    protected $name = 'Товары каталога';
    
    protected $model_elements = [ ... ];
    
    protected function beforeCreate($fields)
    {
        if(!$fields['price'])
            return ['active' => 0];
    }
    
    protected function beforeUpdate($id, $old_fields, $new_fields)
    {
        if(!$old_fields['active'] && $new_fields['active']) 
            return ['status' => 'new', 'order' => 1];
    }
     
    protected function beforeDelete($id, $fields) 
    { 
        if($fields['type'] == 'special') 
        { 
            $this -> addError('Удаление не было произведено по причине...'); 
            return false;
        }
    }
}

Вставка кода в административный интерфейс

При необходимости в административной панели можно добавлять собственные фрагменты HTML и PHP кода. Для этого в папке customs/models/ создаем файлы, которые будут автоматически подключаться в заранее обозначенных местах. В названии фалов вместо слова 'model' должно стоять название модели, например products-create.top.php.

Для обычных моделей

Список записей модели

  • model-index-top.php - перед кнопками верхней навигации
  • model-index-bottom.php - после постраничной разбивки

Создание новой записи

  • model-create-top.php - перед формой
  • model-create-form.php - перед кнопками до закрытия формы
  • model-create-bottom.php - после формы и кнопок

Редактирование записи

  • model-update-top.php - перед формой
  • model-update-form.php - перед кнопками до закрытия формы
  • model-update-bottom.php - после формы и кнопок

Создание и редактирование записи

  • model-action-top.php - перед кнопками верхней навигации
  • model-action-bottom.php - после формы и кнопок

Для простых моделей

Редактирование полей простой модели.

  • model-index-top.php - перед формой
  • model-index-form.php - перед кнопками до закрытия формы
  • model-index-bottom.php - после формы

Пример подключаемого файла, добавим кнопку для перехода на специальную страницу в административной панели, которые описаны в разделе Дополнения к административной панели. Для модели товаров создадим файл с кнопкой, которая будет располагаться под таблицей с записями модели. Название файла для модели Products будет customs/models/products-index-bottom.php.

<?
//Если у пользователя есть права на редактирование, выводим ссылку,
//если нет, то сообщение о нехватке прав

if($system -> user -> checkModelRights($system -> model -> getModelClass(), 'update'))
    $update_path = 'location.href="'.Registry::get('AdminPanelPath').'custom/?view=upload"';
else
    $update_path = "dialogs.showAlertMessage('{no_rights}')";
?>

<button type='button' onclick='<? echo $update_path; ?>'>Обновить прайс</button>

 

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

Типы данных

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

Простые модели
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться