randomizex
@randomizex
http://resume.web-ivan.ru

Почему CIBlockElement::Add() не отдает ошибок на обязательные поля?

Следующий код выполняется без ошибок, не смотря на то что в 'PROPERTY_VALUES' не хватает обязательного свойства 'EMAIL'. причем если я пытаюсь сделать подобное через админку где отрабатывает файл тот же CIBlockElement::Add() в файле \bitrix\modules\iblock\admin\iblock_element_edit.php он отдаст ошибку что не хватает свойства.
$add = new \CIBlockElement();
$data = [
            'IBLOCK_ID' => 7,
            'ACTIVE' => 'Y',
            'NAME' => date('d.m.Y H:i') ,
            'PROPERTY_VALUES' => [
               'NAME'=> 'Имя',
               'PHONE'=> '322-223-322'
           ]
        ];

     $id = $add->Add($data);
      if (!$id) {
            throw new \Exception($add->LAST_ERROR);
        }


Как заставить отдавать подобные ошибки и не создавать элемент если не пришло обязательное свойство?
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
randomizex
@randomizex Автор вопроса
http://resume.web-ivan.ru
Разобрался. В CIBlockElement::Add() проверка на свойства работает по другому.
она проверяет валидность только переданных свойств в 'PROPERTY_VALUES'. То есть чтобы она заругалась что (Обязательное свойство "###" не заполнено). Его надо отдать в 'PROPERTY_VALUES' с пустым значением.
Также он не проверяет права на запись у пользователя, их надо проверять отдельно через \CIBlock::GetPermission().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы