Тема: Не срабатывает onShopProductPreUpdate

Занялся не большой доработкой по работе с товарами. Нашел функционал, который добавляет дополнительную вкладку на страницу добавления/редактирования товара moduleAdditions
Для этого создал свой модуль и в нем делаю:

public function autoload() {
         \CMSFactoryEvents::create()->setListener('handler', 'ShopAdminProducts:preEdit');
        //Так тоже пробовал -     handler не вызывается в обеих случаях
//\CMSFactory\Events::create()->onShopProductPreUpdate()->setListener('handler');
        
    }

Собственно вопрос... что сделано не так?

public static function handler($data) {
       
                 $view = assetManager::create()
                ->setData('productId', 25)
                ->fetchAdminTemplate('/admin/settings');
                
        assetManager::create()
                ->appendData('moduleAdditions', $view);

Thumbs up Thumbs down

2

Re: Не срабатывает onShopProductPreUpdate

Уважаемые разработчики! Есть ли в создании Listener ошибка? И если ее нету - объясните что за чертовщина происходит?

Thumbs up Thumbs down

3

Re: Не срабатывает onShopProductPreUpdate

public static function adminAutoload() {

        parent::adminAutoload();
\CMSFactory\Events::create()->setListener('handler', 'ShopAdminProducts:preEdit');
    }

для методов вызываемыми  с админки.

Thumbs up Thumbs down

4

Re: Не срабатывает onShopProductPreUpdate

Stas пишет:
public static function adminAutoload() {

        parent::adminAutoload();
\CMSFactory\Events::create()->setListener('handler', 'ShopAdminProducts:preEdit');
    }

для методов вызываемыми  с админки.

Ага, собственно это и нужно... Добавить вкладку в админку при редактировании товара

Thumbs up Thumbs down

5

Re: Не срабатывает onShopProductPreUpdate

Уважаемый Stas, все же у меня в коде есть ошибки или все таки не работает событие?

Thumbs up Thumbs down

6

Re: Не срабатывает onShopProductPreUpdate

проверить срабатывание модуля можете следующим образом.
в методе handler сделать dd($data);
увидите приходящие параметры.

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

Thumbs up Thumbs down

7

Re: Не срабатывает onShopProductPreUpdate

Stas, код метода handler:

public static function handler($data) {
      
        $view = assetManager::create()
                ->setData('productId', 25)
                ->fetchAdminTemplate('/admin/settings'); // assets/admin/settings.tpl в каталоге моего модуля
                
        assetManager::create()
                ->appendData('moduleAdditions', $view);
    }

Т.е. я ожидаю, что в админке, когда я открываю товар на редактирование - должна появится вкладка moduleAdditions
Этого не происходит... Я пробовал выкидывать в этом методе исключение - но тоже ничего... Соответсвенно я предполагаю, что вызов хендлера не происходит при событии "ShopAdminProducts:preEdit"

Thumbs up Thumbs down

8

Re: Не срабатывает onShopProductPreUpdate

Замените

->fetchAdminTemplate('/admin/settings'); 

на

->fetchAdminTemplate('settings'); 

Остальное все ок, должно работать, проверьте стоит ли у модуля параметр "автозагрузка" включеным

ImageCMS PHP Team Lead
https://github.com/imagecms/ImageCMS - ночные сборки корпорейта
https://scrutinizer-ci.com/g/imagecms/ImageCMS/badges/quality-score.png?b=development https://codeclimate.com/github/imagecms/ImageCMS/badges/gpa.svg

Thumbs up Thumbs down

9

Re: Не срабатывает onShopProductPreUpdate

Автозагрузка включена, правки внес, но изменений нету... Повторюсь, пробовал в хендлере выкидывать исключение сразу же без загрузки шаблона и т.д. Ничего не происходит sad

Thumbs up Thumbs down

10

Re: Не срабатывает onShopProductPreUpdate

откройте файл  /application/libraries/BaseAdminController.php

в фориче метода autolodModules()

вставте такую строку

if($moduleName == ' Имя вашего модуля') {
                        dd($module);
                    }

если не сработает, тогда откройте вашу базу данных и в таблице components проверте загрузку вашего модуля

Thumbs up Thumbs down

11

Re: Не срабатывает onShopProductPreUpdate

Скрин БД: http://prntscr.com/be6jfb
скрин кода: http://prntscr.com/be6jtj
throw new Exception не срабатывает в autolodModules()

Thumbs up Thumbs down

12

Re: Не срабатывает onShopProductPreUpdate

условие проверки загрузки вашего модуля должно быть таким.
http://pix.toile-libre.org/upload/origi … 463008.png

если не срабатывает, тогда смотрите настройки своего модуля,
чтоб файл и клас модуля назывались как и сам модуль.
и название папки модуля совпадало с таблице в бд.

затем в случае срабатывания данного правила,
в файле модуля, а не в админском файле (важно!)

http://pix.toile-libre.org/upload/origi … 463803.png

в противном случає, напишите на почту s.knysh@imagecms.net

Thumbs up Thumbs down

13

Re: Не срабатывает onShopProductPreUpdate

Первое условие работает
В файле модуля (Файл в корне папки модуля) с названием модуля тоже внес правки, но ничего. Верно ли я определил файл модуля?

Thumbs up Thumbs down

14

Re: Не срабатывает onShopProductPreUpdate

создайте проект на гитхабе,   или залейте архив с модулем на гугл диск, и сбросте на почту s.knysh@imagecms.net
посмотрим.

Thumbs up Thumbs down