Прикручивам migxdb к пользователю в админке

В админке данным пользователя понадобилось прикрутить допполе-таблицу в отдельный таб. Можно было написать таб на extJs, прикрутить Migx или прикрутить getTables. Каждый раз писать на extJs меня напрягает, а getTables не популярный. Так что решил прикрутить Migx. На удивление все получилось. Описание по катом.



1) Создаем через migx пакет history (Имя может быть любым, но его тогда изменить в конфиге migx).

2) Создаем через migx в пакете history таблицу в базе с xml конфигом history.xml
В поле resource_id будет заноситься id пользователя. В migx resource_id прописано и автоматически записывается в базу. Вместо resource_id просто подсовываем id пользователя в плагине.

3) Создаем конфиг migx с именем history (Имя может быть любым, но его тогда нужно будет изменить в плагине)
Пример конфига history_migx_config.json

4) На событие OnUserFormPrerender вешаем плагин с кодом user_migxdb_tab.php
На строке 12 меняется имя конфига. (В строке 31 resource_id заменяется на id пользователя.)

Допполе таблица теперь работает, но к сожалению выдает ошибку в консоле браузера и не дооформляет поля в форме создания-редактирования. Для исправления пришлось немного поправить modx :-(. А конкректно рендеры tv полей.
В рендере текстого поля manager/templates/default/element/tv/renders/input/textbox.tpl вместо
Ext.getCmp('modx-panel-resource').getForm().add(fld);
пишем
var mainPanel = Ext.getCmp("modx-panel-resource");
    if (mainPanel) Ext.getCmp('modx-panel-resource').getForm().add(fld);
И тоже самое для даты manager/templates/default/element/tv/renders/input/date.tpl.
Поправленные файлы:
date.tpl
textbox.tpl
Теперь все идеально работает.

Думаю, что migx можно прикрутить и другим формам, но пока такой задачи не стоит.
Надеюсь кому-нибудь решение поможет,
Александр Туниеков
03 февраля 2023, 05:23
modx.pro
4
792
+15
Поблагодарить автора Отправить деньги

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

Артур Шевченко
03 февраля 2023, 09:44
+1
Молодец, что поделился наработками. Было бы вообще прекрасно, если бы ты смог найти другое решение для исправления ошибок в консоли, править исходники не хорошо.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1