Использование метода setValue при сохранении строки типа HTML-текст — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: « category:Написание кастомных макросов Если в вашем кастомном макросе используется метод set…»)
 
Строка 1: Строка 1:
[[category:Написание кастомных макросов]]
+
Актуально для 2.9.6.
Если в вашем кастомном макросе используется метод setValue для сохранения данных с различными html тэгами, то необходимо использовать следующею конструкцию для корректной записи данных:
+
 
 +
----
 +
Задача: через API сохранять форматированный текст в поля типа "html-текст".
 +
 
 +
Решение:
 +
Если в вашем кастомном макросе используется метод setValue для сохранения данных с различными html тегами, то необходимо использовать следующею конструкцию для корректной записи данных:
 
<source lang="php">
 
<source lang="php">
$hierarchy = umiHierarchy::getInstance();
+
<?php
$elementId = 47;
+
header("Content-type: text/html; charset=utf-8");
$element = $hierarchy->getElement($elementId);
+
include "standalone.php";
$value = "<p><b>umitest text</b></p>";
+
$hierarchy = umiHierarchy::getInstance();
$old_mode = umiObjectProperty::$IGNORE_FILTER_INPUT_STRING;
+
$elementId = 47;
umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = true;
+
$element = $hierarchy->getElement($elementId);
$element->setValue('content', $value);
+
$value = "<p><b>umitest text</b></p>";
$element->commit();
+
$old_mode = umiObjectProperty::$IGNORE_FILTER_INPUT_STRING;
umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = $old_mode;
+
umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = true;
 +
$element->setValue('content', $value);
 +
$element->commit();
 +
umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = $old_mode;
 
</source>
 
</source>
 +
Результат выключением фильтра:<br/>
 +
[[Файл:Screenshot-by-nimbus (2).png]]
 +
Результат при обычной работе:<br/>
 +
[[Файл:Screenshot-by-nimbus.png]]
 +
 +
[[category:Написание кастомных макросов]]

Версия 13:25, 11 апреля 2014

Актуально для 2.9.6.


Задача: через API сохранять форматированный текст в поля типа "html-текст".

Решение: Если в вашем кастомном макросе используется метод setValue для сохранения данных с различными html тегами, то необходимо использовать следующею конструкцию для корректной записи данных:

<?php
	header("Content-type: text/html; charset=utf-8");
	include "standalone.php";
	$hierarchy = umiHierarchy::getInstance();
	$elementId = 47;
	$element = $hierarchy->getElement($elementId);
	$value = "<p><b>umitest text</b></p>";
	$old_mode = umiObjectProperty::$IGNORE_FILTER_INPUT_STRING;
	umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = true;
	$element->setValue('content', $value);
	$element->commit();
	umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = $old_mode;

Результат выключением фильтра:
Screenshot-by-nimbus (2).png Результат при обычной работе:
Screenshot-by-nimbus.png