
Утилиты: Поля модели
Поля из таблицы 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. Частые значения:
| Значение | Ширина | Описание |
|---|---|---|
| 3 | 25% | Четверть строки |
| 4 | 33% | Треть строки |
| 6 | 50% | Половина строки |
| 8 | 67% | Две трети строки |
| 12 | 100% | Вся строка |
Источник данных для combo
Для типа combo укажите JSON-конфигурацию с обязательным source.type.
Модель (класс из реестра):
{
"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 из поставки. Первый найденный выигрывает.
Статический список:
{
"source": {
"type": "static",
"options": [
{ "value": "value1", "label": "Вариант 1" },
{ "value": "value2", "label": "Вариант 2" }
]
}
}Поле url не нужно: готового роута GET /api/mgr/options/list нет, список опций отдаёт GET /api/mgr/options.
Управление секциями
Создание секции
- Нажмите кнопку «+» в панели секций
- Заполните форму:
| Поле | Описание |
|---|---|
| Модель | Для какой модели секция. Обязательное поле, после создания не меняется |
| Ключ | Уникальный идентификатор. После создания не меняется |
| Ключ лексикона | Ключ перевода названия |
| Название | Отображаемое название |
| Скрыта | Секция не показывается в форме |
| Порядок | Позиция в списке секций |
Редактирование секции
Кликните иконку редактирования рядом с названием секции.
Удаление секции
Внимание
При удалении секции поля не удаляются, а перемещаются в «Без секции».
Секцию с флагом «по умолчанию» (is_default) удалить нельзя — сервер отвечает Cannot delete default section. В колонке «Системная» такие секции помечены.
Порядок секций
Перетаскивайте секции, чтобы сменить порядок.
Примеры использования
Скрытие технических полей
Поля, которые обычно скрывают:
id— генерируется автоматическиcreatedon— технические датыsource— если используется один источник
API-эндпоинты
Список моделей
GET /api/mgr/model-fields/modelsОтвет:
{
"success": true,
"data": {
"models": [
{ "value": "msOrder", "label": "Заказ" },
{ "value": "msVendor", "label": "Производитель" }
]
}
}Список полей модели
GET /api/mgr/model-fields?model=msOrderСоздание поля
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. Иначе форма заказа не открылась бы у менеджера без права на настройки.
Обновление поля
PUT /api/mgr/model-fields/{id}Тело запроса:
{
"label": "Артикул товара",
"xtype": "textfield",
"section_id": 1,
"visible": true,
"width": 6,
"description": "Уникальный код товара"
}Переупорядочивание полей
PUT /api/mgr/model-fields/ranksТело — JSON с новым порядком полей (как в drag-and-drop интерфейса). Требуется mssetting_save.
Секции модели
GET /api/mgr/model-fields/sections/msOrderСоздание секции
POST /api/mgr/model-fields/sectionsТело запроса:
{
"model": "msOrder",
"section_key": "prices",
"label": "Цены",
"sort_order": 10
}Редактирование секции
PUT /api/mgr/model-fields/sections/{id}Тело — изменяемые поля секции (label, sort_order, …). Требуется mssetting_save.
Переупорядочивание секций
PUT /api/mgr/model-fields/sections/ranksТело — JSON с новым порядком секций. Требуется mssetting_save.
Удаление секции
DELETE /api/mgr/model-fields/sections/{id}Связь с конфигурацией
Не путайте с Поля товара (product_data) и с Колонки гридов. Влияние на CSV-импорт и публичный API этим экраном не задаётся.
