Прикручивам 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 вместо
Поправленные файлы:
date.tpl
textbox.tpl
Теперь все идеально работает.
Думаю, что 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 можно прикрутить и другим формам, но пока такой задачи не стоит.
Надеюсь кому-нибудь решение поможет,
Поблагодарить автора
Отправить деньги
Комментарии: 1
Молодец, что поделился наработками. Было бы вообще прекрасно, если бы ты смог найти другое решение для исправления ошибок в консоли, править исходники не хорошо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.