Доброго всем времени суток! Есть форма обратной связи, после отправки которой получаю сообщение об ошибке мол одно из полей не заполнено. Данное поле скрытое, атрибут value точно заполнен и данные из данного поля точно отправляются, но в любом случае возвращается массив $arResult["ERRORS"] с ошибкой. Как мне найти обработчик данной формы который формирует массив $arResult["ERRORS"]?!??
Класс TicketTable является наследником класса DataManager из ядра Битрикса и использует его метод add для добавления данных. За проверку полей отвечает вот этот метод:
Код
public static function checkFields(Result $result, $primary, array $data)
{
$entity = static::getEntity();
//checks required fields
foreach ($entity->getFields() as $field)
{
if ($field instanceof ScalarField && $field->isRequired())
{
$fieldName = $field->getName();
if (
(empty($primary) && (!isset($data[$fieldName]) || $field->isValueEmpty($data[$fieldName])))
|| (!empty($primary) && isset($data[$fieldName]) && $field->isValueEmpty($data[$fieldName]))
)
{
$result->addError(new FieldError(
$field,
Loc::getMessage("MAIN_ENTITY_FIELD_REQUIRED", array("#FIELD#"=>$field->getTitle())),
FieldError::EMPTY_REQUIRED
));
}
}
}
// checks data - fieldname & type & strlen etc.
foreach ($data as $k => $v)
{
if ($entity->hasField($k))
{
$field = $entity->getField($k);
}
else
{
throw new Main\ArgumentException(sprintf(
'Field `%s` not found in entity when trying to query %s row.',
$k, $entity->getName()
));
}
$field->validateValue($v, $primary, $data, $result);
}
}
Массив $arTicket здесь хранится в массиве $data. В итоге я решил проблему просто добавив новый элемент в массив $arTicket, с именем того самого проблемного поля:
скорее всего свойство PLATFORM_TECHNOLOG обязательное в инфоблоке, можно снять с него обязательность в настройках инфоблока, если оно было проблемным и сейчас не нужно
Годая мысль. Проблема в том что я не могу найти инфоблок который отвечает за тикеты. Нашел только таблицу altasib_support_ticket_message в БД где они хранятся. Есть ли какой-то способ найти нужный инфоблок?!?? Если что за форму саппорта отвечает вот этот сервис