Это плохо, что обработчики завязаны на внутреннюю логику системы, для этого должны быть свои обработчики, а не одни для всех. Дайте нам выбор и гибкость, а у себя делайте что хотите
Обработчики не завязаны на внутреннюю логику системы, а являются ее неотъемлемой частью. Какая задача может потребовать такого функционала (отключения обработчиков)?
Любая задача которая связана с интеграцией с другой системой, конкретно 1с, реализуется свой импорт экспорт на сайте.
C 1C идет экспорт на сайт (пользователи, профили, заказы) используется стандартное API Add, Update, Delete. Самое интерcное происходит когда нужно отдавать 1С данные по действию на сайте, это все теже Add, Update, Delete, лучший вариант вешать на события, и в этом проблема так как эти события будут срабатывать и при импорте из 1с что не нужно, в этой ситуации как раз и хотелось бы отключать их.
Может есть решение котороя я не нашел, буду благодарен за наводку.
Решение банально. Обработчики собираются в один класс. В классе имеется внутренняя статическая переменная плюс 2 метода работы - включить/выключить. По умолчанию выключено. В своем импорте/экспорте перед началом работы включаете. В специфических обработчиках идет проверка переменной. Выключено - обработчик прекращает работу. Все.
Решение банально. Обработчики собираются в один класс. В классе имеется внутренняя статическая переменная плюс 2 метода работы - включить/выключить. По умолчанию выключено. В своем импорте/экспорте перед началом работы включаете. В специфических обработчиках идет проверка переменной. Выключено - обработчик прекращает работу. Все.
Я буду только рад найти решение, и возможно я туплю, но я не совсем понимаю как это должно работать.
class HandlerTest
{
static $flag = false;
function handler(){}
}
AddEventHandler('sale', 'OnOrderAdd', array('HandlerTest', 'handler'));
Евгений если трудно подскажите, думаю всем будет полезно это знать.
Рамиль, мне как-то сложно что-либо еще добавить - все изложено, дальше только код писать. Посмотрите класс CCatalogDiscountSave - в нем подобная логика реализована, только не для событий.
C 1C идет экспорт на сайт (пользователи, профили, заказы) используется стандартное API Add, Update, Delete. Самое интерcное происходит когда нужно отдавать 1С данные по действию на сайте, это все теже Add, Update, Delete, лучший вариант вешать на события, и в этом проблема так как эти события будут срабатывать и при импорте из 1с что не нужно, в этой ситуации как раз и хотелось бы отключать их.
Может есть решение котороя я не нашел, буду благодарен за наводку.
туплю, но я не совсем понимаю как это должно работать.Евгений если трудно подскажите, думаю всем будет полезно это знать.