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

Событийные методы простых моделей

Ответов: 3
Никита
14.02.2021 17:25

Здравствуйте, возникла проблема, событийные методы по типу beforeUpdate для обычных моделей как я понял не применяются для простых моделей. Изучив код предустановленных простых моделей SEO понял что нужно использовать функцию Update(), в функции указал нужные действия при обновления поля, всё работает. Но вот если обновлять другие поля простой модели то они уже обновляться не будут. Временно решил использовать костыль setValue, но при обновлении данных из другой точки кода, все данные обнуляются. Как правильно нужно использовать функцию Update для корректной работы ?

public function update() {
      if ($this -> elements["raspisanie"] -> getValue()) {
        rename($this -> elements["raspisanie"] -> getValue(), $_SERVER["DOCUMENT_ROOT"].'/userfiles/files/rasp/raspisanie.pdf');
        $this -> setValue("raspisanie", 'userfiles/files/rasp/raspisanie.pdf');
      }
      $this -> setValue("allow_form_courses", $this -> elements["allow_form_courses"] -> getValue());
      $this -> setValue("allow_vk_mini_apps", $this -> elements["allow_vk_mini_apps"] -> getValue());
      parent :: update();
    }
Прочтений: 1334
Ответов: 3
Maxim
15.02.2021 12:11

Добрый день, да, beforeUpdate для простых моделей не применяется, а обновление данных вручную производится как на примере тут https://mv-framework.ru/upravlenie-prostymi-modeliami/

Но у вас в коде не совсем понятно с какой целью делаются эти действия. Вы хотите изменить данные сразу после обновления данных в админке?

//если обновляете данные во frontend
$mv -> model-> setValue("key", "value") -> update();

//Если перегружаете метод update в классе модели, то попробуйте так
public function update()
{
    ...

    $arguments = func_get_args();
    $backend = (isset($arguments[0]) && $arguments[0] == "backend") ? "backend" : false;
    parent :: update($backend);
}
Никита
16.02.2021 16:12

Подскажите каким образом в функции Update можно обновить значения, $this -> setValue() не обновляет значения. В чём смысл, в простой модели есть поле типа файл, если файл загружают в админке, его нужно переименовать и переместить в определённую папку, и изменить этот путь в значении поля.

public function update() {

        if ($this -> elements["raspisanie"] -> getValue()) {
          rename($this -> elements["raspisanie"] -> getValue(), $_SERVER["DOCUMENT_ROOT"].'/userfiles/files/rasp/raspisanie.pdf');
          $this -> setValue("raspisanie", 'userfiles/files/rasp/raspisanie.pdf');
        }

        $arguments = func_get_args();
        $backend = (isset($arguments[0]) && $arguments[0] == "backend") ? "backend" : false;
        parent :: update($backend);

    }
Maxim
16.02.2021 18:17

Дело в том что при обновлении MV складывает файлы в папки по названиям модели, т.е. он будет у вас класть файл в папку /userfiles/models/model-files/
И потом будет его пытаться оттуда взять и показать в админке, сейчас вы ему предлагаете другой путь и он пропускает сохранение файла в админку.

Если вы хотите, чтобы файл лежал именно по такому пути userfiles/files/rasp/raspisanie.pdf лучше переместите (скопируйте) его уже на фронтенде, не меняя исходного файла и потом показывайте новый файл на сайте

if($mv -> model -> raspisanie)
{
    copy( ... )
}
Ответить на вопрос
Ответить
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться