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

Автоформирование URL (ЧПУ) на основании названия

Ответов: 3
Артём
02.10.2016 20:10

Добрый день!

Чуть запутался с вопросом, помогите распутаться.
Есть каталог товаров, у каждого товара своё название (поле name) на латинице, кириллице или всё вместе. И есть поле url, в котором хранить красивый ЧПУ URL. Есть три сценария:

1) Пользователь сам заполняет как name, так и url и мы не ломаем голову.
2) Пользователь заполнил name (как обязательное поле), но url оставил пустым. Тут нам необходимо, чтобы система сформировала url автоматически основываясь на названии (по принципам ЧПУ - транслит, обработка пробелов и спец. символов).
3) Пользователь редактирует поле url, при это есть вероятность того, что он оставит поле пустым.

По второму сценарию, как я понял, необходимо:

В модели через beforeInsert как-то поймать url и поняв что передана пустая строка, поймать name, пропустить через условную функцию generate_url() и положить новый url в базу. При это не забыв проверить уникальность сгенерированного url.

По третьем сценарию, как я понял, необходимо:

По сути ничего не делаем.
Благодаря настройке array("unique" => true) система сама проверит уникальность поля. Однако если передана пустая строка (пользователь стёр данные) - повторяем алгоритм из предыдущего сценария.

Главный вопрос — как это всё же грамотнее реализовать? Верно ли использовать функции beforeInsert и beforeUpdate и как правильнее будет "поймать" переданные name и url, а так же перезаписать их в случае необходимости?

Прочтений: 1465
Ответов: 3
Maxim
03.10.2016 09:57

Артём, добрый день, если я все правильно понял, речь идет о работе в админке. Там есть такие возможности

1. Атрибут translit_from для поля url очень удобный, он ставит иконку для генерации ЧПУ
http://mv-framework.ru/spetcialnye-strokovye-url-redirect-email-phone/

2. array("unique" => true) работает при валидации формы и действительно проверяет значение на уникальность, но если будет пустая строка, то она ее так пропустит. Это можно компенсировать тем, что сделать поле url обязательным для заполнения. Вместе с 1. должно быть эффективно.

3. Если применять beforeCreate/beforeUpdate, то там можно поймать значение url, если оно пустое то сгенерировать его при помощи функции I18n :: translitUrl($name), проверить на уникальность методом $this -> countRecords(array("url" => $value)) и потом вернуть значение для вставки в базу как описано тут http://mv-framework.ru/nastroika-modeli/

Артём
03.10.2016 10:14

Спасибо за исчерпывающий ответ, изучу. Подскажите, планируется ли какое-то обновление продукта? Добавление нового функционала.

Admin
04.10.2016 09:44

Да, в ближайшие месяцы планируется новая версия системы, основной упор там будет на обновление интерфейса админки, появление тем оформления. Документация постоянно пополняется, а основной упор всегда идет на полную обратную совместимость и стабильность.

Ответить на вопрос
Ответить
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться