Разработка сайтов и интернет-магазинов Блог веб-разработчика

Создание пользовательской страницы CMP через MIGX

Изображение сгенерированно ИИ и принадлежит qwen.ai
Изображение сгенерированно ИИ и принадлежит qwen.ai

Созданная страница будет иметь табличную структуру в административной части и свою таблицу в базе данных. Управление содержимым таблицы будет осуществляться через сниппет, подключённый к пакету.

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

Будем считать, что MIGX был когда-то установлен. Поэтому смело переходим в Пакеты - MIGX.

  1. Вкладка Package Manager. В поле Package Name пишем название будущего пакета (для примера я назвал его packename). Затем нажимаем Create Package. Создание пользовательской страницы CMP через MIGX

  2. Подготавливаем XML-схему для создания таблицы в базе данных. Вставляем её во вкладку XML Schema и сохраняем через Save Scheme. Создание пользовательской страницы CMP через MIGX

Можно взять эту схему ⬇️ и заменить поля своими:

<?xml version="1.0" encoding="UTF-8"?>
<model package="packename" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="" phpdoc-subpackage="" version="1.1">
    <object class="packenameComponent" table="packename_component" extends="xPDOSimpleObject">
        <field key="cardcode" dbtype="varchar" precision="50" phptype="string" null="false" default="" />
        <field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default="" />
        <field key="phone" dbtype="varchar" precision="50" phptype="string" null="false" default="" />
        <field key="email" dbtype="varchar" precision="50" phptype="string" null="false" default="" />
        <field key="created" dbtype="datetime" phptype="datetime" null="false" default="CURRENT_TIMESTAMP" />
    </object>
</model>
  1. Переходим на вкладку Create Tables и нажимаем кнопку Create Tables. Так мы создали в базе данных таблицу packename_component с полями: id (создаётся автоматически как автоинкремент), cardcode, name, phone, email, created. Создание пользовательской страницы CMP через MIGX

Для всех действий поле Package Name должно быть заполнено названием созданного пакета.

Можно посмотреть в админке, создалась ли таблица. Создание пользовательской страницы CMP через MIGX

Создание страницы CMP с таблицей в MIGX

  1. Во вкладке MIGX нажимаем на Добавить элемент. Создание пользовательской страницы CMP через MIGX

  2. Во вкладке Settings заполняем названием пакета поля Name и Unique MIGX ID. Создание пользовательской страницы CMP через MIGX

  3. Создаём форму для ручного редактирования полей (можно пропустить, если ручное управление не нужно).

    • Добавить элемент. В поле Caption пишем название всплывающего окна.
    • Добавить элемент. Здесь нужно добавить все поля, которые можно редактировать, в моём случае - cardcode, name, phone, email. Во вкладке Field, в поле Fieldname, указываем название поля (оно совпадает с тем, что указано в <field key="ТУТ"...), а в поле Caption - описание этого поля.
    • Выполнить.
    • Заполняем остальные поля (Fields) аналогично.
    • Выполнить.

Создание пользовательской страницы CMP через MIGX

  1. Заполняем вкладку Columns. Принцип тот же, что и в предыдущем пункте. Эта вкладка формирует таблицу на Custom Manager Page.

Обязательно нужно создать столбец ID.

  • Добавить элемент.
  • Вкладка Column.
  • Header - название столбца.
  • Field - название поля, как в предыдущем пункте.
  • Выполнено.
  • Повторяем для всех столбцов.

Создание пользовательской страницы CMP через MIGX

  1. Во вкладке Context menus проставляем галочки напротив тех пунктов, которые будут выводиться в контекстном меню при нажатии правой кнопкой мыши. Создание пользовательской страницы CMP через MIGX

  2. Привязываем таблицу к созданному ранее пакету. Во вкладке MIGXdb-Settings нужно указать название пакета и класс (<object class="packenameComponent"...). Создание пользовательской страницы CMP через MIGX

  3. Оформляем CMP и таблицу на ней, указав название и описание во вкладке CMP-settings. Создание пользовательской страницы CMP через MIGX

  4. Нажимаем общую для окна кнопку Выполнено.

  5. Привязываем пакет к верхнему меню: иконка шестерёнки → Меню. Создание пользовательской страницы CMP через MIGX

Вот и всё. Теперь, перейдя по добавленному пункту меню, откроется кастомная страница с таблицей.

Управление данными в CMP

Будем использовать ранее созданный пакет. В сниппете или в другом месте пишем примерный код, обязательно подключив пакет:

if (!$modx->addPackage('packename', MODX_CORE_PATH . 'components/packename/model/')) {
    return 'false';
}
// Создаём запись
$table = $modx->newObject('packenameComponent');
$array = [
    'cardcode' => '209099',
    'name' => 'Вася Пупкин',
    'phone' => '+7(000)111-22-33',
    'email' => 'vasya@pupkin.ru'
];

$table->fromArray($array);
$table->save();

// Делаем выборку
$response = $modx->getIterator('packenameComponent');

foreach ($response as $res) {
    print_r($res->toArray());
}
Теги:

❗️ Код и технические решения в блоге — это исключительно субъективное мнение автора, предоставленное по принципу «как есть» (AS IS) в ознакомительных целях. Не является готовым продуктом или призывом к действию. Автор не гарантирует работоспособность и безопасность кода в вашем окружении. Вы обязаны самостоятельно тестировать решения перед использованием в продакшене. Автор снимает с себя любую ответственность за потерю данных, сбои систем, уязвимости, финансовые убытки или любые другие последствия, возникшие из-за применения материалов блога.

Обсудим вашу задачу и рассчитаем стоимость?

Отвечаю лично в течение пары часов. Никакого спама и автоматических рассылок.