CustomExtra 3.0.0-beta для MODX3

Визуальный конструктор xPDO-объектов для MODX3. Создавайте кастомные таблицы, поля и связи через интерфейс админки без написания XML-схем вручную.



Возможности


Визуальный конструктор объектов — создание классов и таблиц через UI
Настраиваемые поля — все типы данных MySQL (varchar, int, text, datetime и др.)
Связи между объектами — Composite и Aggregate с настройкой cardinality
Автогенерация — PHP-классы и таблицы создаются автоматически
Динамические пункты меню — быстрый доступ к данным из админки
CRUD-интерфейс — управление записями без написания кода
Интеграция с pdoTools — вывод данных на сайте

Требования


— MODX Revolution 3.0+
— PHP 8.0+
— MySQL 5.7+ / MariaDB 10.3+

Установка


Пакет доступен в modstore.pro

1. Установите пакет через Extras → Installer
2. Перейдите в Extras → CustomExtra
3. Создайте первый объект

Использование


1. Откройте вкладку Объекты
2. Нажмите Создать объект
3. Заполните:
Класс — название в PascalCase (например, `Product`, `OrderItem`)
Таблица — имя таблицы в snake_case (например, `products`, `order_items`)
4. Добавьте поля
5. Нажмите Сохранить



CustomExtra автоматически:
— Добавит объект в XML-схему
— Сгенерирует PHP-классы с namespace `CustomExtra\Model`
— Создаст таблицу `modx_customextra_*` в базе данных
— Создаст файлы лексиконов

Индексы


none — без индекса
index — обычный индекс (ускоряет поиск)
unique — уникальный индекс (запрещает дубликаты)

Создание связей


1. Откройте вкладку Связи
2. Нажмите Создать связь
3. Выберите:
Родитель — главный объект (например, `Category`)
Дочерний — зависимый объект (например, `Product`)
Тип связи: `Composite` или `Aggregate`
Cardinality — `one` или `many`
Foreign Key — поле в дочернем объекте для связи



Пункты меню


Создайте пункты меню для быстрого доступа к данным:

1. Откройте вкладку Пункты меню
2. Нажмите Создать пункт меню
3. Укажите:
Название — текст пункта меню
Объекты — классы через `||` (например, `Product||Category`)



Пункты меню появятся в разделе Extras.

В админке


После создания объекта и пункта меню:
1. Перейдите в созданный пункт меню
2. Используйте грид для создания, редактирования и удаления записей
3. Дочерние объекты доступны через связи



На фронтенде


Через pdoTools
[[pdoResources?
  &class=`CustomExtra\Model\Product`
  &loadModels=`customextra`
  &sortby=`id`
  &sortdir=`DESC`
  &where=`{"active":1}`
  &tpl=`tpl.Product.item`
]]

В PHP-коде
// Подключение пакета
$modx->addPackage('CustomExtra\Model', MODX_CORE_PATH . 'components/customextra/model/');

// Получение записи
$product = $modx->getObject('CustomExtra\Model\Product', ['id' => 1]);

// Создание записи
$product = $modx->newObject('CustomExtra\Model\Product');
$product->set('name', 'Новый товар');
$product->set('price', 999.99);
$product->set('active', true);
$product->save();

// Выборка с условием
$c = $modx->newQuery('CustomExtra\Model\Product');
$c->where(['active' => 1]);
$c->sortby('price', 'ASC');
$c->limit(10);
$products = $modx->getIterator('CustomExtra\Model\Product', $c);

foreach ($products as $product) {
    echo $product->get('name') . ': ' . $product->get('price') . "\n";
}

// Работа со связями
$category = $modx->getObject('CustomExtra\Model\Category', 1);
$products = $category->getMany('Products'); // Alias из связи
Илья Уткин
6 часов назад
modx.pro
72
+6

Комментарии: 2

vectorserver
3 часа назад
0
Красавчег однозначно!!!
    Андрей
    3 часа назад
    0
    Охренительно! Это топ! Пора перелезать на тройку =))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2