Доброго дня всем! Проблема такая - добавляю элементы инфоблока с помощью компонента iblock.element.add.form все добавляется а вот перехватить событие OnBeforeIBlockElementAdd никак не получается - всю голову себе уже сломал код такой
Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler"));
class MyClass {
function OnBeforeIBlockElementAddHandler(&$arFields)
{
global $APPLICATION;
$error = false;
print '<pre>';print_r($arFields);print '</pre>';
if(mb_strlen(trim($arFields['NAME'])) == 0){
$APPLICATION->throwException("Введите название заявки.");
$error = true;
}
if($error) return false;
}
}
Все верно! Там он и должен быть. А выше нет никакого обработчика? Я просто с рабочего проекта взял пример, ток код убрал, вывод сделал массива и прервал выполнение, т.е. при отправки заявки у вас должен вывестись массив на "голой" странице странно конечно...
1. Событие OnAfterIBlockElementAdd будет вызываться в любом случае, даже если в OnBeforeIBlockElementAdd сработало исключение и элемент добавлен не был.
Узнать о том, что добавление было отменено в событии OnAfterIBlockElementAdd можно с помощью arFields["RESULT"].
Если добавление прошло успешно, в нем будет храниться ID элемента, иначе - false.
там был еще обработчик OnBeforeUserUpdate (он работал вполне штатно),но я все закоментировал и вставил Ваш код. написал в техподдержку там написано было протестить конфигурацию- я протестировал и выдало такие ошибки: 1.Обязательные параметры PHP Ошибка! Значение max_input_vars должно быть не ниже 10000. Текущее значение: 3000
2.Размер стека и pcre.recursion_limit Ошибка! Не работает
3.Режим работы MySQL Ошибка! Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION
Alexey Egorenkov написал: 3.Режим работы MySQL Ошибка! Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION
такое не встречал ни разу ), но раз вы говорите что добавляется - то добавляется, но исправить конечно стоит
Цитата
Alexey Egorenkov написал: 2.Размер стека и pcre.recursion_limit Ошибка! Не работает
это не должно мешать
Цитата
Alexey Egorenkov написал: 1.Обязательные параметры PHP Ошибка! Значение max_input_vars должно быть не ниже 10000. Текущее значение: 3000
тоже не так критично... но лучше поправить
Цитата
max_input_vars integer Сколько входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, и все последующие переменные в запросе игнорируются.
Ну так это перед обновлением пользователя, отношение к добавлению элемента никакого не имеет! Щас я на каком нибуть тесте попробую! Кстать, просто в админке попробуйте добавить любой елемент в любой ИБ, должно показать!
короче понял в чем дело там видимо перед добавлением элемента - идет проверка на обязательные элементы в компоненте и если проверка не срабатывает, то видимо добавление не происходит. Короче убрал из параметров компонента обязательные поля и все заработало! теперь проверять обязательные буду в обработчике Спасибо за помощь!