Товары из отдельной таблицы (migxdb)

#MODx, #MODx Revo
Товары из отдельной таблицы (migxdb)

В MODX Revolution можно создавать дополнительные поля с табличными параметрами ввода. Для этих целей идеально подходит дополнение MIGX. Пакет MIGX позволяет работать как с небольшим объемом данных, сохраняя их в JSON как обычное tv-поле, так и с обычными таблицами в базе данных. При этом MIGX предоставляет удобный интрерфейс для ввода и редактирования данных в таблице. Давайте рассмотрим, как создать и настроить редактирование отдельной таблицы в базе данных для сайта на движке MODX Revolution.

Идем в меню установленной компоненты MIGX и настраиваем:

Создание пакета в core/components

Прежде всего надо создаь пакет в папке core/components, где будет располагаться схема и генерируемые php-файлы для нашей отдельной таблицы. Вручную его создавать не надо. MIGX предоставляет ui-интерфейс для этой операции.

Cоздание пакета для файлов отдельной таблицы

Сохраняем схему для кастомной таблицы

Для работы с отдельной таблицей нам наверняка понадобится чтение данных через API MODX. Для этого необходима ORM-прослойка для работы с базой данных. Чтобы сгенерировать класс для работы с нашей таблицей, достаточно описать структуру таблицы в схеме - специальном xml-файле. Файл схемы будет хранится в пакете, который мы создали на предыдущем шаге. Заполнить схему можно также через интерфейс MIGX:

Добавление схемы для отдельной таблицы migxdb

Код схемы из примера можно получить по ссылке. Важные параметры для замены:

  • model package="pages"  - в package задается название пакета, который вы создавали на предыдущему шаге;
  • object class="CustomPages" table="custom_pages". Class - название класса для работы с вашей отдельной таблицей через API MODX, а table - название таблицы в базе данных;
  • fields - описание полей, которые должны быть в таблице;
  • index - описание индексов таблицы.

Если вы создаете отдельную таблицу для товаров, то наверняка понадобится добавить поля для цены и изображения. В схеме из примера их нет.

Создаем таблицу

И теперь, сохранив схему, мы можем создать таблицу. Всё необходимое есть на вкладке - create Tables:

Создаем таблицу в MIGX

Создание интерфейса для редактирования таблицы из панели администрирования MODX

Для работы с нашей отдельной таблицей из админ-панели MODX нам надо настроить конфигурацию MIGX:

Добавление конфигурации в MIGX

Для этого нам надо перейти уже на новую вкладку - вкладку MIGX.

Настройка конфигурации MIGX для отображения таблицы в админ-панели

Для обязательного заполнения нам понадобятся 5 вкладок:

  • Settings - достаточно заполнить поле Name - это будет имя конфигурации, которое нам понадобится вдальнейшем.
  • Formtabs - настройка полей ввода для добавления/редактирования строки из отдельной таблицы.
  • Columns - какие поля из отдельной таблицы будут отображаться в табличном редакторе в админ панели.
  • Actionbuttons - какие кнопки выводить перед таблицей (в том числе кнопка для добавления записи!)
  • MIGXdb-Settings - данные об отдельной таблице и ORM-класса для работы с ней, чтобы MIGX знал, откуда брать данные в визуальную компоненту и куда сохранять.

 

MIGXdb - настройка конфигурации

Добавление текстового поля на вкладку Formtabs

Достаточно заполнить поля:

  • Fieldname - название поля из таблицы.
  • Caption - подпись, которая будет стоять рядом с полем в форме редактирования.

Если надо, чтобы поле ввода было не текстовое, а изображение или любой другой тип ввода, доступный для tv, - надо указать название этого типа в поле Input TV type, к примеру для content можно указать richtext - чтобы появился редактор для текста.

 

Настройка Formtabs в MIGX

Добавить кнопки для управления таблицей

Для этого надо заполнить вкладвку Actionbuttons. Эти кнопки появляются над таблицей. Обязательно надо отметить чекбокс с addItem - это кнопка для добавления записи в таблицу. Остальные - по желанию. 

Кнопка для добавления записи в migxdb

Подвязка таблицы к шаблону

Теперь, когда у нас есть конфигурация, хотя бы с заполненной вкладкой Formtabs и вкладкой Actionbuttons - можно посмотреть, как будет выглядить форма для ввода и редактирования данных в таблице. Для этого нужно создать дополнительное поле с параметрами ввода migxdb и указать в поле "Конфигуарция" - название, которое вводили на вкладке Settings в конфигурации MIGX:

Создание tv для migxdb

Настройка связи с базой данных

Для обмена данными с базой в конфигурации MIGX на вкладке MIGXdb-Settings надо указать пакет и класс для таблицы, которые были созданы в процессе сохранения схемы. Также можно настроить порядок сортировки, кол-во вывода записей на одной странице и т.д. И выбрать режим загрузки данных. По умолчанию стоит загрузка данных по запросу. Удобно ставить, чтобы данные загружались вместе со странице автоматически - это параметр Load Grid  со значением auto.

Пример заполнения вкладки MIGXdb-Settings

Колонки для таблицы MIGX

Теперь осталось настроить колонки таблицы, которые мы хотим видеть в админ панели. Для этого заполняем вкладку Columns. Важно указать среди прочих колонок - колонку id - она используется для пакетных операций и для операций контекстного меню со строкой. Без этого столбца операции над строкой работать не будут! Столбцу можно задать сортировку, ширину и т.д. Поле Header - заголовок колонки, Field - поле из нашей отдельной таблицы.

Настройка столбцов для таблицы MIGX

Контекстное меню

Добавить контекстное меню для "Редактирования", "Копирования", "Удаления" у строк таблицы можно на вкладке Contextmenus. Очень удобная часть интерфейса.

Контекстное меню для строк таблицы migxdb

Этого всего достаточно, чтобы создать отдельную таблицу в базе данных вашего сайта на MODX Revolution, и настроить удобный интерфейс для работы с ней через админ панель.

Ещё один важный момент: в таблицах должно присутствовать поле resource_id - это поле устанавливает связь с Ресурсами из MODX, через него определяется, у какого из ресурсов отображать строки из вашей отдельной таблицы для просмотра и редактирования в админ-панели сайта!


Поделиться в соцсетях:

Статьи по теме