|
Чтение настройки
Для того, чтобы просто получить значение настройки в своем коде, достаточно вызвать обычную функцию для получения опции. Модуль askaron.settings подключать не надо.
<?echo \COption::GetOptionString( "askaron.settings", "UF_PHONE" );?>
Значение настройки будет извлечено не из таблицы опций, а из таблицы дополнительных пользовательских полей.
Значения настроек кешируются. При повторном обращении к настройкам они будут извлекаться из кеша гораздо быстрее.
Замечание по третьему параметру \COption::GetOptionString
Третий параметр функции не поддерживается и не используется:
<?echo \COption::GetOptionString( "askaron.settings", "UF_PHONE", "default value" );?> всегда будет возвращаться default value
Ограничения
Длина пользовательского поля ограничена колонкой таблицы базы данных, в которой это значение хранится. Для текстовых полей MySQL это тип TEXT на 64 килобайта. Ничто не мешает в случае чего сделать тип колонки LONG_TEXT на 4 гигабайта.
Если у вас множественное поле, то общая его длина ограничена размером колонки типа TEXT (можно сделать LONG_TEXT). Но длина одного значения множественного поля всего 2000 символов. Обязательно учитывайте это обстоятельство при проектировании. Это ограничение системы Битрикс для множественных пользовательских полей.
Класс CAskaronSettings
Функция
array CAskaronSettings::GetFields()
Функция возвращает массив значений всех пользовательских настроек
<?
if(CModule::IncludeModule("askaron.settings"))
{
$arFields = CAskaronSettings::GetFields();
}
?>
Функция
void CAskaronSettings::ClearCache()
Функция очищает кеш значений всех пользовательских настроек
<?
if(CModule::IncludeModule("askaron.settings"))
{
CAskaronSettings::ClearCache();
}
?>
Функция
boolean CAskaronSettings::Update( array $arFields )
Функция записывает значения пользовательских настроек.
Возвращает значение true, если всё хорошо, и false, если произошла ошибка.
<?
if ( CModule::IncludeModule("askaron.settings") )
{
$arUpdateFields = array(
"UF_PHONE" => "+7 (863) 292-41-62",
);
$obSettings = new CAskaronSettings;
$res = $obSettings->Update( $arUpdateFields );
if ( $res )
{
echo "Поля записаны успешно";
}
else
{
echo $obSettings->LAST_ERROR;
}
}
?>
События OnBeforeSettingsUpdate и OnAfterSettingsUpdate
События OnBeforeSettingsUpdate и OnAfterSettingsUpdate вызываются в методе CAskaronSettings::Update()
Функция-обработчик имеет параметр &$arFields.
Если функция-обработчик для события OnBeforeSettingsUpdate вернет false, то запись значений не произойдет.
Пример:
<?
// в /bitrix/php_interface/dbconn.php
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_65456.txt");
// в /bitrix/php_interface/init.php
AddEventHandler("askaron.settings", "OnBeforeSettingsUpdate", array( "CMyClass", "OnBeforeSettingsUpdateHandler" ) );
AddEventHandler("askaron.settings", "OnAfterSettingsUpdate", array( "CMyClass", "OnAfterSettingsUpdateHandler" ) );
class CMyClass
{
public static function OnBeforeSettingsUpdateHandler( &$arFields )
{
if ( isset( $arFields["UF_PHONE"] ) && strlen( $arFields["UF_PHONE"] ) == 0 )
{
global $APPLICATION;
$APPLICATION->throwException("Телефон не может быть пустым");
return false;
}
}
public static function OnAfterSettingsUpdateHandler( &$arFields )
{
// получить массив всех новых значений, которые записались
$arFields = CAskaronSettings::GetFields();
// записать массив значений в лог-файл
AddMessage2Log( print_r($arFields, true) );
}
}
?>
Описание модуля |
Описание курса
| Получения результата у полей типа список и файл
|