1С: Битрикс — перевод строки в поле ответа

По-умолчанию поле ответа типа textarea в веб-формах 1С: Битрикс содержит обычный текст. После отправки ответа из поля вырезаются символы перевода строки. А они нужны. И при показе результатов на сайте и при редактировании ответов.

Вот как решил эту ситуацию я в ситуации с редактированием ответов в фронт-энде.

Для начала находим компонент который  у нас отвечает за редактирование и написание ответов.

У меня он находится в bitrix\components\demo\form.result.edit\

Шаблон нам не нужен, мы работаем только с данными, поэтому открываем файл component.php.

Ищем блок  get/post processing.

В нём после строки

// check errors
$arResult["FORM_ERRORS"] = CForm::Check($arParams["WEB_FORM_ID"], 
$arResult["arrVALUES"], $arParams["RESULT_ID"], "Y", 
$arParams['USE_EXTENDED_ERRORS']);

Я добавляю свою для замены символа перевода строки (его создаёт нажатие клавиши Enter в поле ответа) на <br/>

$arResult["arrVALUES"] = str_replace("\n", "<br/>",$arResult["arrVALUES"]);

Затем я ищу блок output.

Где после строк

case "text":
$value = CForm::GetTextAreaValue(
"ADDITIONAL_".$arResult["arQuestions"][$FIELD_SID]["ID"],
 array(), $arResult["arrVALUES"]);

Мы добавляем строку

$value = str_replace("<br/>", "\n", $value);

с помощью которой меняем <br/> в ответе на системный символ перевод строки.

Может немного не там, и немного неаккуратно, но всё работает и ошибок нет.



КОММЕНТАРИЕВ НЕТ

Оставить отзыв

This site uses Akismet to reduce spam. Learn how your comment data is processed.