Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Файл для редактирования элемента, позволяющий модифицировать поля перед сохранением

00 голосов
5
Здраствуйте, у меня возник вопрос по этому файл.
я пишу такой код

Код
if(strlen($_POST['PROP']['172']['n0'])>200) {
$error = new _CIBlockError(2, "DESCRIPTION_REQUIRED", "Длина равна ".strlen($_POST['PROP']['172']['n0'])." что больше допустимых 200");
}


все работает, но проблема в том что все значения которые до этого были вбиты они очищаются, в том числе и то свойство которое я проверяю на длину.
как сделать так, чтобы ничего из того что пользователь заполнил не очищалось?
спросил 23 Янв, 14 от krit (120 баллов)

5 Ответы

00 голосов
Попробуйте вместо этого бросать ексепшн битриксовый. Вроде должно работать.
ответил 17 Май, 14 от ledyNEXUS (420 баллов)
00 голосов
Это конечно на любителя, но я обычно вместо редактирования даного файла использую механизм событий, вам бы подошло, и данные сохраняются.
OnBeforeIBlockElementAdd
ответил 13 Сен, 14 от ioannes (540 баллов)
00 голосов
Цитата
Максим Месилов пишет:
Попробуйте вместо этого бросать ексепшн битриксовый. Вроде должно работать.

Попробовал как самое простое из предложенных вариантов.
написал не мудрствуя код из хелпа.
Код
$exception = new CApplicationException("File is not found", BX_E_FILE_NOT_FOUND);
$APPLICATION->ThrowException($exception); 

вместо того еррора, и увы, сообщение вообще игнорится, нигде ни выводится, и сохраняется все элементарно.

а вот на счет OnBeforeIBlockElementAdd нужно подумать, потому что это как из пушки по воробьям. тем более там сначала следилку нужно будет поставить, ибо мне такое только на один инфоблок надо.
интересно, неужели нельзя написать что-нибудь типа
$chto_to = $_POST;
может админы в эту темку глянут?
просто ведь наверняка все решается элементарно, система то продуманная сильно.
ответил 19 Янв, 15 от krit (120 баллов)
00 голосов
Цитата
Роман Сухарь пишет:
а вот на счет OnBeforeIBlockElementAdd нужно подумать, потому что это как из пушки по воробьям. тем более там сначала следилку нужно будет поставить, ибо мне такое только на один инфоблок надо. интересно, неужели нельзя написать что-нибудь типа


там всего одно условие которое будет проверять на нужный id инфоблока. ;) Попробуйте, должно сработать...
ответил 04 Май, 15 от ioannes (540 баллов)
00 голосов
в документации всё просто надо написать строкой ниже:

$bVarsFromForm=true;

и тогда значения полей будут сохраняться
ответил 27 Янв, 19 от аноним

Похожие вопросы

0 голосов
6 ответов
спросил 01 Окт, 13 от GameOver (160 баллов)
0 голосов
7 ответов
0 голосов
3 ответов
0 голосов
1 ответ
0 голосов
7 ответов