Функция cot_implode_messages в Cotonti
Функция выполняет сбор сообщений, которые были добавлены в систему, и формирует один HTML-строковый вывод, который может быть использован на странице для отображения сообщений.
Функция cot_implode_messages выполняет сбор сообщений, которые были добавлены в систему, и формирует один HTML-строковый вывод, который может быть использован на странице для отображения сообщений.
/**
* Collects all messages and implodes them into a single string
* @param string $src Origin of the target messages
* @param string $class Group messages of selected class only. Empty to group all
* @return string Composite HTML string
* @see cot_error()
* @see cot_get_messages()
* @see cot_message()
*/
function cot_implode_messages($src = 'default', $class = '')
{
global $R, $L, $error_string, $sys;
$res = '';
if(empty($_SESSION['cot_messages'][Cot::$sys['site_id']])) return '';
if (!is_array($_SESSION['cot_messages'][Cot::$sys['site_id']])) return '';
$messages = cot_get_messages($src, $class);
foreach ($messages as $msg) {
$text = isset(Cot::$L[$msg['text']]) ? Cot::$L[$msg['text']] : $msg['text'];
$res .= cot_rc('code_msg_line', array('class' => $msg['class'], 'text' => $text));
}
if (!empty($error_string) && (empty($class) || $class == 'error')) {
$res .= cot_rc('code_msg_line', array('class' => 'error', 'text' => $error_string));
}
return empty($res) ? '' : cot_rc('code_msg_begin', array('class' => empty($class) ? 'message' : $class))
. $res . Cot::$R['code_msg_end'];
}
Параметры функции:
1. $src (string) — Источник сообщений.
Если не указан, будут выбраны сообщения из всех источников.
2. $class (string) — Класс сообщений,
которые нужно сгруппировать. Если не указано, сгруппируются все сообщения.
Алгоритм работы функции:
Проверка на наличие сообщений:
Функция сначала проверяет, есть ли сохраненные сообщения в сессии, с учетом текущего идентификатора сайта Cot::$sys['site_id']. Если сообщений нет, функция сразу возвращает пустую строку.
Получение сообщений:
Функция вызывает cot_get_messages($src, $class), чтобы получить список сообщений для указанного источника и/или класса. Если параметры не указаны, будут получены все сообщения.
Формирование строки с сообщениями:
Для каждого сообщения из полученного списка, текст сообщения извлекается из массива Cot::$L (локализованные строки) или напрямую из текста сообщения, если локализованной версии нет.
Каждое сообщение добавляется в строку, используя функцию cot_rc('code_msg_line', ...), которая может сгенерировать HTML-код для вывода одного сообщения с указанным классом и текстом.
Если есть строка ошибки, сохраненная в $error_string, она также добавляется к результату (если не указан класс или класс равен 'error').
Формирование окончательной строки:
Если в процессе были собраны сообщения, то возвращается строка, которая состоит из заголовка и обертки для сообщений. Это делается с помощью функции cot_rc('code_msg_begin', ...), которая добавляет начало для блока сообщений, и с помощью функции Cot::$R['code_msg_end'], которая добавляет конец блока.
Возвращаемое значение:
Функция возвращает строку, содержащую HTML-вывод для отображения сообщений. Если сообщений нет, возвращается пустая строка.
Роль функции:
cot_implode_messages используется для агрегации сообщений об ошибках, предупреждениях и успешных действиях, собранных системой, и их вывода в одном месте на странице. Она комбинирует все нужные сообщения в единую HTML-строку, что позволяет в дальнейшем удобно вывести их на страницах сайта.
Разберем пример функции в штатном функционале котонти и попробуем понять что здесь происходит
$msgSeparate = isset(Cot::$cfg['msg_separate']) ? Cot::$cfg['msg_separate'] : false; $error = $msgSeparate ? cot_implode_messages($name, 'error') : '';
Давайте разберем этот пример:
Пояснение шаг за шагом:
Переменная $msgSeparate:
В первой строке идет проверка, существует ли в конфигурации фреймворка параметр msg_separate (в массиве Cot::$cfg).
Если параметр существует и имеет значение, то это значение присваивается переменной $msgSeparate.
Если параметр не существует, переменной $msgSeparate присваивается значение false.
Результат:
Если Cot::$cfg['msg_separate'] установлен (например, в конфигурации фреймворка есть такой параметр), то $msgSeparate будет иметь значение, равное этому параметру.
Если параметр не существует, то $msgSeparate будет равно false.
Переменная $error:
Далее, на основе значения переменной $msgSeparate происходит выбор, следует ли собирать сообщения об ошибках с помощью функции cot_implode_messages.
Если $msgSeparate равно true (то есть, конфигурация позволяет отдельно выводить ошибки), то вызывается функция
cot_implode_messages($name, 'error')
которая собирает все ошибки для указанного источника $name и класса 'error'.
Функция cot_implode_messages вернет строку HTML с ошибками.
Если же $msgSeparate равно false, то переменной $error присваивается пустая строка.
Роль и цель применения:
$msgSeparate: Управляет тем, нужно ли отдельно собирать и выводить сообщения об ошибках. Это может быть полезно, если в конфигурации сайта есть настройка, которая позволяет разделять ошибки от других типов сообщений (например, предупреждений или успешных сообщений).
$error: В случае, если сообщения об ошибках должны выводиться отдельно (когда $msgSeparate истинно), эта переменная будет содержать HTML-разметку с ошибками. Если же ошибки не нужно выводить отдельно, то переменная останется пустой.
Применение:
Этот код может быть полезен, например, в случаях, когда в админке или на странице настроек нужно контролировать, как будут отображаться сообщения об ошибках: отдельно или вместе с другими типами сообщений. В зависимости от настройки в конфигурации, сообщения об ошибках могут быть собраны и отформатированы для вывода.
Пример использования в контексте кода:
Если в конфигурации сайта включена настройка msg_separate (например, true), то система будет использовать cot_implode_messages для формирования HTML-сообщений об ошибках.
Если msg_separate отключена или не настроена, ошибки не будут отображаться с помощью этой функции, и $error останется пустой строкой.
Таким образом, это решение управляет выводом сообщений об ошибках в зависимости от конфигурации.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 11:33
- Последнее обновление: 22.01.2025 11:33