Используем хук order_action.process в плагине для shop.
Если выполняется системное действие PROCESS кнопкой в "В обработку" то в плагин попадают данные о данном действии.
Но если создать свое действие и привязать к нему поведение "В обработку", то в плагин не передаются данные о данном действии.
Код действия из workflow.php
'nalozhennyy-platezh' =>
array (
'name' => 'Наложенный платеж',
'options' =>
'state' => 'nalozhennyy-plat',
'extends' => 'process',
'id' => 'nalozhennyy-platezh',
'classname' => 'shopWorkflowProcessAction',
'plugin' => false,
array (
....
),
7 комментариев
Попробуйте подписаться на хук order_action.nalozhennyy-plat или order_action.nalozhennyy-platezh и посмотреть данные в этом случае.
Глухо как в танке. Не срабатывает хук.
Можно оставить только
Потом не забыть почистить кэш!
А сам метод уже выглядит так
Если ещё немного озаботиться настройками, то ID действий можно вынести в настройки плагина. Тогда вообще будет универсально.
Все это хорошо, но бесполезно пока на order_action.* ничего не передается.Конечно при описанных выше условия: свое действие и привязать к нему поведение "В обработку".Забираю свои слова обратно. Чистка кеша дала результат. Вернуло:
Конечно привязка в пользовательским действиям это хорошо, но не масштабируемо.
В описании хука order_action.process написано:
Логично передавать и связанные пользовательские действия тоже этот хук.
¯\_(ツ)_/¯
Чем возможность настраивать - "не масштабируемо"?
Гипотетически можно тот же один хук использовать, а в нём проверять какой класс отвечает за обработку действия и уже в зависимости от этого включать обработку или нет.
Но теоретически пользователь может подменить обработчик действия "В обработку", и тогда оно тоже перестанет работать.
Может стоит параметр $extends в классе shopWorkflowAction сделать public что бы было легкого получить от какого действия унаследовано:
А то через дамп объекта его как-то не кошерно вытягивать.