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

Помогите разобраться.

00 голосов
9
Хочу менять DETAIL_TEXT в публичной части на странице своей формы отчета в <textarea>  (не "изменить элемент" в режиме правки)
Казалось - всё просто, 
Код
$el = new CIBlockElement;
$arLoadProductArray = Array
(
   "DETAIL_TEXT"    => htmlspecialchars($arTestDriveReport[detailtext]),
   "DETAIL_TEXT_TYPE"    => 'text'
);
$PRODUCT_ID = $arTestDriveReport[car]; 
if($res = $el->Update($PRODUCT_ID, $arLoadProductArray))  
{
}
else
{
   echo "Error: ".$el->LAST_ERROR;
}

После сохранения описания в тексте появляются теги </br>
Как от них избавиться?
спросил 23 Май, 13 от Tirkan (400 баллов)

9 Ответы

00 голосов
В файле "iblock_element_edit.php" так:
$str_DETAIL_TEXT = htmlspecialchars($arIBlock["FIELDS"]["DETAIL_TEXT"]["DEFAULT_VALUE"]);
....
....
[td]
<textarea cols="60" rows="20" name="DETAIL_TEXT" style="width:100%"><?echo $str_DETAIL_TEXT?></textarea>
[/td]
ответил 23 Май, 13 от Tirkan (400 баллов)
00 голосов
Так Вы их и порождаете функцией htmlspecialchars - она не удаляет теги, а заменяет на html-безопасный вид.
ответил 23 Май, 13 от Pomnep (13,960 баллов)
00 голосов
Естественно. Потому что вставляется в textarea.
ответил 13 Авг, 13 от Pomnep (13,960 баллов)
00 голосов
Специально попробовал на другом сайте
Вот так в коде:
Код
<?
$str_DETAIL_TEXT=htmlspecialchars($arTemp[DETAIL_TEXT]);
echo $arTemp[DETAIL_TEXT];
echo "</br>";
echo $str_DETAIL_TEXT;
echo "</br>";
echo "</br>";
?>
<textarea name="detailtext" id="DETAIL_TEXT" wrap="virtual" style="width: 486px; height:250px;"><?echo $arTemp[DETAIL_TEXT]?></textarea>

 

Вот это вижу на странице:

Этот 4-звездочный отель располагается в 100 метрах от главной площади.
Он располагает бесплатным Wi-Fi и номерами с кондиционером.

Этот 4-звездочный отель располагается в 100 метрах от главной площади.<br /> Он располагает бесплатным Wi-Fi и номерами с кондиционером.<br />


----------- textarea ---------------
Этот 4-звездочный отель располагается в 100 метрах от главной площади.<br /> Он располагает бесплатным Wi-Fi и номерами с кондиционером.<br />

----------- textarea ---------------

Получается, что 
Без <textarea>  echo $arTemp[DETAIL_TEXT] - выводит так.
А внутри  <textarea>  echo $arTemp[DETAIL_TEXT] - выводит иначе.
ответил 13 Ноя, 13 от Tirkan (400 баллов)
00 голосов
Посоветуйте что-нибудь.
ответил 21 Фев, 14 от Tirkan (400 баллов)
00 голосов
Вы что сделать хотите? Конкретную задачу обозначьте. Ключи _TYPE (PREVIEW_TEXT_TYPE, DETAIL_TEXT_TYPE) влияют только на вывод CetNext'ом и на содержимое SEARCHABLE_CONTENT
ответил 12 Июнь, 14 от Pomnep (13,960 баллов)
00 голосов
На странице есть форма, с помощью которой можно изменить DETAIL_TEXT
В форме 2 элемента
<textarea name="detailtext" id="DETAIL_TEXT" wrap="virtual" style="width: 486px; height:250px;">
<?echo $arTemp[DETAIL_TEXT];?>
</textarea>
и кнопка submit
Когда страница открывается каждая строчка textarea заканчивается следующим набором символов: <br />
Следующая строка начинается с новой строки и заканчивается таким же набором символов.
На странице обработки вот такой код

Код
      if ($_POST[work]==3)
      {
         $el = new CIBlockElement;
         $arLoadProductArray = Array
         (
            "DETAIL_TEXT"    => $arToProcessing[detailtext],
            "DETAIL_TEXT_TYPE"    => 'text'
         );
         $PRODUCT_ID = $arToProcessing[hotel]; 
         if($res = $el->Update($PRODUCT_ID, $arLoadProductArray))  
         {
         }
         else
         {
            echo "Error: ".$el->LAST_ERROR;
         }
         LocalRedirect("index.php?divid=".$arToProcessing[divid]);
      }

 

Обработка заканчивается возвратом на страницу с формой
После возврата на страницу с формой  textarea каждая строчка textarea заканчивается следующим набором символов: <br /><br />  Следующая строка начинается с новой строки и заканчивается таким же набором символов.

Если еще раз нажать  submit каждая строка в  textarea будет содержать уже три  набора <br /> и так далее
Штатные средства не вписывают в  DETAIL_TEXT лишние символы.
ответил 11 Окт, 14 от Tirkan (400 баллов)
00 голосов
Как показываете? Код.
ответил 11 Фев, 15 от Pomnep (13,960 баллов)
00 голосов
Часть кода страницы:
1.Выбрал поля

2.В форме в textarea вывел детальное описание для редактирования
Код
<?
$arSelect = Array();
$arFilter = Array("IBLOCK_ID"=>3,"ID"=>$hotelID);
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{

   $arTemp = $ob->GetFields();
} 
$str_DETAIL_TEXT=$arTemp[DETAIL_TEXT];
?>

<fo rm action="editdetail.php" method="post">
<textarea name="detailtext" id="DETAIL_TEXT" class="maxlength" style="width: 484px;  height:255px;">
<?echo $str_DETAIL_TEXT;?>
</textarea>

вижу на странице:
Отель располагается в 100 метрах от главной площади города.<br />
Он располагает бесплатным Wi-Fi и номерами с кондиционером.<br />
Если на страницу просто вывести  $str_DETAIL_TEXT

Код
<?
echo $str_DETAIL_TEXT;
?>
 

будет так:
Отель располагается в 100 метрах от главной площади города.
Он располагает бесплатным Wi-Fi и номерами с кондиционером.
ответил 23 Май, 15 от Tirkan (400 баллов)

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

0 голосов
2 ответов
спросил 16 Апр, 14 от Arctill (100 баллов)
0 голосов
2 ответов
спросил 05 Март, 14 от Soulmir (100 баллов)
0 голосов
2 ответов
0 голосов
4 ответов
0 голосов
6 ответов
спросил 18 Окт, 13 от TeAr (120 баллов)