Страница 1 из 1

Регистрация Extenders в модуле

Добавлено: 20.02.2021, 08:52
korshunov
Встретилась ситуация при создании модуля.
В Init.php вставляю

Код: Выделить всё

       $this->registerQueueExtension(
            ['class' => ProductsHelper::class, 'method' => 'getList'],
            ['class' => Extender4::class, 'method' => 'getList']
        );


Выдает ошибку Class Okay\Modules\...\Init\Extender4::getList not callable, что хорошо и правильно.

Добавляю
use Okay\Modules\...\Extenders\Extender4;

Ошибка исчезает. Но экстендер реально не вызывается.
Причина в том, что отсутствует
use Okay\Helpers\ProductsHelper;

Если добавить, то работает.

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

Добавлено: 20.02.2021, 09:56
zyxer
Да, добавили проверку. В следующем релизе будет. Проверка заключается в том, есть ли в расширяемом классе указанный метод.

P.S. Очень рекомендую пользоваться IDE-шкой, она практически исключает такие ситуации. Тот же phpstorm там если написать название класса и выбрать с автокомплита нужный, он сам добавить его в use http://prntscr.com/101qgdm, очень удобно. + Переход по классам через ctrl как по ссылке.

Добавлено: 20.02.2021, 14:59
korshunov
А как на витрине вмешаться и подправить формирование данных из таблицы ok_variants ?
Пробовал навешать экстендеры на ['class' => ProductsHelper::class, 'method' => 'attachVariants'], но, например, на странице корзины это не работает.
Хотелось бы в одном месте перехватить выборку из таблицы и обработать по-своему.

Добавлено: 20.02.2021, 15:49
zyxer
Смотря что именно вам нужно, но можно экстендить CRUD методы классов Entities. Но это будет глобально или же экстендить точечно где это нужно

Добавлено: 21.02.2021, 07:02
korshunov
.