Методы и события Add, Update, Delete

Рейтинг: 5.9187  
Отложено
Предложил Пользователь 10869 20.02.2014 17:29:09

Методы и события Add, Update, Delete

Во всех методах Add, Update, Delete, сделать возможность отключать отработку событий OnBefore* и OnAfter*

По умолчанию конечно все должно срабатывать.

Рейтинг: 0  
Пользователь 10869 24.02.2014 13:30:41
И конечно учесть эту возможность в D7
Рейтинг: 0  
Пользователь 2106 24.02.2014 14:05:38
При выключении обработки полностью развалится весь штатный функционал.
Рейтинг: 0  
Пользователь 10869 24.02.2014 16:18:50
Это плохо, что обработчики завязаны на внутреннюю логику системы, для этого должны быть свои обработчики, а не одни для всех. Дайте нам выбор и гибкость, а у себя делайте что хотите :)
Рейтинг: 0  
Пользователь 2106 24.02.2014 18:07:16
Обработчики не завязаны на внутреннюю логику системы, а являются ее неотъемлемой частью. Какая задача может потребовать такого функционала (отключения обработчиков)?
Рейтинг: 0  
Пользователь 10869 25.02.2014 11:13:11
Любая задача которая связана с интеграцией с другой системой, конкретно 1с, реализуется свой импорт экспорт на сайте.

C 1C идет экспорт на сайт (пользователи, профили, заказы) используется стандартное API Add, Update, Delete. Самое интерcное происходит когда нужно отдавать 1С данные по действию на сайте, это все теже Add, Update, Delete, лучший вариант вешать на события, и в этом проблема так как эти события будут срабатывать и при импорте из 1с что не нужно, в этой ситуации как раз и хотелось бы отключать их.

Может есть решение котороя я не нашел, буду благодарен за наводку. :)
Рейтинг: 5.9418  
Пользователь 2106 25.02.2014 13:32:55
Решение банально. Обработчики собираются в один класс. В классе имеется внутренняя статическая переменная плюс 2 метода работы - включить/выключить. По умолчанию выключено. В своем импорте/экспорте перед началом работы включаете. В специфических обработчиках идет проверка переменной. Выключено - обработчик прекращает работу. Все.
Рейтинг: 0  
Пользователь 10869 25.02.2014 19:15:52
Решение банально. Обработчики собираются в один класс. В классе имеется внутренняя статическая переменная плюс 2 метода работы - включить/выключить. По умолчанию выключено. В своем импорте/экспорте перед началом работы включаете. В специфических обработчиках идет проверка переменной. Выключено - обработчик прекращает работу. Все.
Я буду только рад найти решение, и возможно я туплю, но я не совсем понимаю как это должно работать.


class HandlerTest
{
   static $flag = false;
   
   function handler(){}
}

AddEventHandler('sale', 'OnOrderAdd', array('HandlerTest', 'handler'));


Евгений если трудно подскажите, думаю всем будет полезно это знать. :)  
Рейтинг: 0  
Пользователь 2106 26.02.2014 10:47:46
Рамиль, мне как-то сложно что-либо еще добавить - все изложено, дальше только код писать. Посмотрите класс CCatalogDiscountSave - в нем подобная логика реализована, только не для событий.
Рейтинг: 0  
Пользователь 10869 26.02.2014 21:39:38
Спасибо Евгений