как переопределить функцию компонента в ExtJs?
Приветствую, дорогое сообщество!
Сегодня в очередной раз, понадобилось добавить свои поля в заказ miniShop2, в сообществе уже есть несколько дельных статей, как это сделать, но у всех вариантов есть недостатки:
Это либо исходники править или поля хранятся в json формате и доступны только на чтение.
А хочется полноценных полей, которые можно и редактировать из админки и через api и что при этом исходники не трогать.
Вот в общем у меня какая стратегия выработалась для решения этой задачи:
1)В системную настройку ms2_order_address_fields добавляем наше будущее поле
2)Добавляем в словари miniShop2 название нашего поля на нужном языке, что бы отображать его в админке и на фронте.
3)Далее нужно расширить модель таблицы ms2_order_addresses, причём сделать это не в исходниках, а на лету через плагин, подробно об этом писал наш Гуру Василий — modx.pro/solutions/7037-expanding-any-table-modx/
4)Физически создать в БД нужный столбец со всеми параметрами
5)Изменить js, отвечающий за вывод полей в админке.
И вот тут у меня затык, так как не знаю я ExtJs((
Нужно переопределить функцию в файле — assets/components/minishop2/js/mgr/orders/orders.window.js
В моём случае функция называется — getAddressFields
Но как это сделать не трогая исходников, пока не знаю, поэтому прошу помощи старших и опытных товарищей, подскажите как это можно сделать. Я предполагаю, что можно так же создать плагин на событие и как то переопределить любые методы ExtJs
Сегодня в очередной раз, понадобилось добавить свои поля в заказ miniShop2, в сообществе уже есть несколько дельных статей, как это сделать, но у всех вариантов есть недостатки:
Это либо исходники править или поля хранятся в json формате и доступны только на чтение.
А хочется полноценных полей, которые можно и редактировать из админки и через api и что при этом исходники не трогать.
Вот в общем у меня какая стратегия выработалась для решения этой задачи:
1)В системную настройку ms2_order_address_fields добавляем наше будущее поле
2)Добавляем в словари miniShop2 название нашего поля на нужном языке, что бы отображать его в админке и на фронте.
3)Далее нужно расширить модель таблицы ms2_order_addresses, причём сделать это не в исходниках, а на лету через плагин, подробно об этом писал наш Гуру Василий — modx.pro/solutions/7037-expanding-any-table-modx/
4)Физически создать в БД нужный столбец со всеми параметрами
5)Изменить js, отвечающий за вывод полей в админке.
И вот тут у меня затык, так как не знаю я ExtJs((
Нужно переопределить функцию в файле — assets/components/minishop2/js/mgr/orders/orders.window.js
В моём случае функция называется — getAddressFields
Но как это сделать не трогая исходников, пока не знаю, поэтому прошу помощи старших и опытных товарищей, подскажите как это можно сделать. Я предполагаю, что можно так же создать плагин на событие и как то переопределить любые методы ExtJs
Комментарии: 6
Я предполагаю, что можно так же создать плагин на событида
и как то переопределить любые методы ExtJsда modx.pro/help/12702/#comment-83435
Володя, спасибо большое за наводку, только вопрос а что передаётся в качестве первого аргумента? В указанном примере это таблица заказов, я так понял, а как найти вкладку с полями адреса заказа?
Кажется нашёл, наверное это вот это — miniShop2.window.UpdateOrder
пойти сюда github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/mgr/orders/orders.window.js и тут поискать
Володя, спасибо огромное, всё получилось!
пожалуйста!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.