Skip to content
  1. Компоненты
  2. MiniShop3
  3. Интерфейс админки
  4. Утилиты
  5. Поля модели

Утилиты: Поля модели ​

Поля из таблицы ms3_model_fields: отображение уже существующих колонок моделей.

Назначение ​

Утилита «Поля модели»

Правите подписи, виджеты и секции существующих полей; данные в таблицах не меняются.

Не путать с page-fields

Поля товара (ms3_product_fields, page_key=product_data) настраивают только вкладку «Свойства товара» на карточке товара. Свои поля создают новые колонки в БД. Cookbook: Поля модели.

Отличие от своих полей ​

ХарактеристикаПоля моделиСвои поля
ИсточникСуществующие поля в БДНовые поля
Создание колонокНетДа (ALTER TABLE)
УдалениеТолько из конфигурацииПолное удаление
ПрименениеНастройка отображенияРасширение схемы

Интерфейс ​

Выбор модели ​

Фильтр по модели вверху страницы — доступны 4 модели:

  • msOrder — заказы
  • msOrderAddress — адреса
  • msOrderProduct — позиции в заказе
  • msVendor — производители

msProductData в этом списке нет: данные товара настраиваются в Поля товара.

Панель секций ​

Сворачиваемая панель «Управление секциями» над таблицей полей. Колонки — перетаскивание, Ключ, Название, Скрыта, Системная, Действия.

Таблица полей ​

Под панелью секций: поля и настройки.

КолонкаОписание
Имя поляСистемное имя поля
НазваниеОтображаемое название
СекцияПринадлежность к секции
ШиринаШирина в сетке (1–12)
Тип поляТип виджета
ВидимоеПоказывать ли поле
ОбязательноеПоле обязательно к заполнению

Редактирование поля ​

Кликните строку, откроется диалог редактирования.

Основные параметры ​

ПараметрОписание
Имя поляСистемное имя колонки. Обязательное, задаётся при создании
НазваниеОтображаемое имя поля
ОписаниеПодсказка под полем ввода
PlaceholderТекст-подсказка внутри поля ввода
СекцияГруппа, в которой отображается поле
ВидимостьПоказывать поле в форме
ОбязательноеПоле нельзя оставить пустым
ПорядокПозиция поля внутри секции

Тип виджета (xtype) ​

ТипОписание
textfieldТекстовое поле
numberfieldЧисловое поле
textareaМногострочное поле
comboВыпадающий список
datefieldВыбор даты
checkboxФлажок

Ширина в сетке ​

Сетка на 12 колонок, ширина задаётся ползунком — любое целое от 1 до 12. Частые значения:

ЗначениеШиринаОписание
325%Четверть строки
433%Треть строки
650%Половина строки
867%Две трети строки
12100%Вся строка

Источник данных для combo ​

Для типа combo укажите JSON-конфигурацию с обязательным source.type.

Модель (класс из реестра):

json
{
  "source": {
    "type": "model",
    "class": "MiniShop3\\Model\\msOption",
    "valueField": "id",
    "labelTemplate": "{caption}",
    "where": {"active": true},
    "sort": {"caption": "ASC"},
    "limit": 500
  }
}

Кроме valueField и labelTemplate источник принимает labelField — одна колонка под подпись, по умолчанию name, — и sort в виде «поле: направление». limit по умолчанию 500: это защита от выборки на тысячи строк, а не предел, который стоит снимать бездумно.

Источники читаются по приоритету: запись в базе, затем custom/combos/{model}.php, затем config/combos/{model}.php из поставки. Первый найденный выигрывает.

Статический список:

json
{
  "source": {
    "type": "static",
    "options": [
      { "value": "value1", "label": "Вариант 1" },
      { "value": "value2", "label": "Вариант 2" }
    ]
  }
}

Поле url не нужно: готового роута GET /api/mgr/options/list нет, список опций отдаёт GET /api/mgr/options.

Управление секциями ​

Создание секции ​

  1. Нажмите кнопку «+» в панели секций
  2. Заполните форму:
ПолеОписание
МодельДля какой модели секция. Обязательное поле, после создания не меняется
КлючУникальный идентификатор. После создания не меняется
Ключ лексиконаКлюч перевода названия
НазваниеОтображаемое название
СкрытаСекция не показывается в форме
ПорядокПозиция в списке секций

Редактирование секции ​

Кликните иконку редактирования рядом с названием секции.

Удаление секции ​

Внимание

При удалении секции поля не удаляются, а перемещаются в «Без секции».

Секцию с флагом «по умолчанию» (is_default) удалить нельзя — сервер отвечает Cannot delete default section. В колонке «Системная» такие секции помечены.

Порядок секций ​

Перетаскивайте секции, чтобы сменить порядок.

Примеры использования ​

Скрытие технических полей ​

Поля, которые обычно скрывают:

  • id — генерируется автоматически
  • createdon — технические даты
  • source — если используется один источник

API-эндпоинты ​

Список моделей ​

http
GET /api/mgr/model-fields/models

Ответ:

json
{
  "success": true,
  "data": {
    "models": [
      { "value": "msOrder", "label": "Заказ" },
      { "value": "msVendor", "label": "Производитель" }
    ]
  }
}

Список полей модели ​

http
GET /api/mgr/model-fields?model=msOrder

Создание поля ​

http
POST /api/mgr/model-fields

Тело — параметры поля (те же, что в диалоге: label, xtype, section_id, visible, width, …). Требуется mssetting_save.

Остальные эндпоинты ​

МетодРоутОписание
GET/api/mgr/model-fields/{id}Одно поле
DELETE/api/mgr/model-fields/{id}Удалить поле
GET/api/mgr/model-fields/visible/{model}Только видимые поля модели — этим пользуются формы заказа
GET/api/mgr/model-fields/combo-options/{model}Варианты для всех combo-полей модели
GET/api/mgr/model-fields/combo-options/{model}/{field_name}Варианты одного combo-поля

У visible и combo-options шлюз мягче: достаточно любого из девяти прав MiniShop3, тогда как запись требует mssetting_save. Иначе форма заказа не открылась бы у менеджера без права на настройки.

Обновление поля ​

http
PUT /api/mgr/model-fields/{id}

Тело запроса:

json
{
  "label": "Артикул товара",
  "xtype": "textfield",
  "section_id": 1,
  "visible": true,
  "width": 6,
  "description": "Уникальный код товара"
}

Переупорядочивание полей ​

http
PUT /api/mgr/model-fields/ranks

Тело — JSON с новым порядком полей (как в drag-and-drop интерфейса). Требуется mssetting_save.

Секции модели ​

http
GET /api/mgr/model-fields/sections/msOrder

Создание секции ​

http
POST /api/mgr/model-fields/sections

Тело запроса:

json
{
  "model": "msOrder",
  "section_key": "prices",
  "label": "Цены",
  "sort_order": 10
}

Редактирование секции ​

http
PUT /api/mgr/model-fields/sections/{id}

Тело — изменяемые поля секции (label, sort_order, …). Требуется mssetting_save.

Переупорядочивание секций ​

http
PUT /api/mgr/model-fields/sections/ranks

Тело — JSON с новым порядком секций. Требуется mssetting_save.

Удаление секции ​

http
DELETE /api/mgr/model-fields/sections/{id}

Связь с конфигурацией ​

Не путайте с Поля товара (product_data) и с Колонки гридов. Влияние на CSV-импорт и публичный API этим экраном не задаётся.