Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Статусные сообщения

После выполнения любого модификационного действия, нужно выводить сообщение, оповещающее пользователя об успешности (или не успешности) операции.

Статусные сообщения предназначены для вывода результата последнего совершенного действия или описания ошибки, если она произошла во время действия. 

По умолчанию компоненты списка и формы уже содержат статусные сообщения удаления, добавления и изменения элементов.

Для добавления статусного сообщения используется метод AMI_Response::addStatusMessage.

addStatusMessage($key, $aParams, [$type = self::STATUS_MESSAGE], [$modId = ''])

Параметры:

Параметр

Описание

Пример

$key

Ключ переменной из языкового шаблона

'status_add'

$type

Тип сообщения

AMI_Response::STATUS_MESSAGE

$aParams

Массив для замены в языковых переменных параметров значениями (ключ => значение)

array()

$modId

ID модуля, если не задан, будет использован ID текущего модуля

$this->getModId()

Предусмотрено три типа сообщений:
AMI_Response::STATUS_MESSAGE – обычное сообщение;
AMI_Response::STATUS_MESSAGE_WARNING - предупреждение;
AMI_Response::STATUS_MESSAGE_ERROR – ошибка.

Пример

Создание статусного сообщения:

$aEvent['oResponse']->addStatusMessage('status_ok');

Создание статусного сообщения об ошибке:

$aEvent['oResponse']->addStatusMessage('status_fail', AMI_Response::STATUS_MESSAGE_ERROR);

Для отображения статусных сообщений в модуле, нужно добавить соответствующие переменные в языковой файл «{$modId}_messages.lng».

Пример

%%status_add%en%%
Record was added.
%%status_add%ru%%
Запись добавлена.
 
%%status_add_fail%en%%
Record was not added!
%%status_add_fail%ru%%
Запись не добавлена!

Статусные сообщения могут быть параметризованы.

Пример

Если для действия изменения значения записи нам нужно вывести в статусном сообщении прежнее и новое значение записи, нужно создать языковую переменную в  в файле «{$modId}_messages.lng», которой вместо значений будут выделенные знаком подчеркивания имена параметров.

%%status_renamed%en%%
Record "_source_" was renamed to "_destination_".
%%status_renamed%ru%%
Запись "_source_" переименована в "_destination_".

В коде обработчика действия переименования, при добавлении статусного сообщения, нужно передать параметры, содержащие значения до выполнения действия и после его выполнения.

class AmiClean_AmiSample_ListActionsAdm extends Hyper_AmiClean_ListActionsAdm{
    public function dispatchRename($name, array $aEvent, $handlerModId, $srcModId){
        $oItem = $this->getItem($this->getRequestId());
        $nickname = $oItem->nickname;
        $oItem->nickname = '[' . $nickname . ']';
        $oItem->save();
        $aEvent['oResponse']->addStatusMessage(
            'status_renamed',
            array(
                'source'      => $nickname,
                'destination' => $oItem->nickname
            )
        );
        $this->refreshView();
        return $aEvent;
    }
}

Для удаления всех статусных сообщений используется метод AMI_Response::resetStatusMessages

В момент добавления статусного сообщения вызывается событие on_add_status_message.
Это событие позволяет влиять на статусные сообщения в момент их добавления. 

Параметры $aEvent:

Параметр

Описание

key

Ключ переменной из языкового шаблона

aParamsМассив для замены в языковых переменных параметров значениями (ключ => значение)
typeТип сообщения

Перед отдачей массива сообщений вызывается событие on_get_status_messages.
Это событие позволяет влиять на статусные сообщения перед их отправкой. 

Параметры $aEvent:

Параметр

Описание

aStatusMessages

Массив содержащий все сообщения, подготовленные для вывода. Каждое сообщение содержит параметры: key – ключ переменной из языкового шаблона, message – локализованное сообщение, type – тип сообщения.

Пример

Перехват статусных сообщений:

class AmiClean_AmiSample_Adm extends Hyper_AmiClean_Adm{
    public function __construct(AMI_Request $oRequest, AMI_Response $oResponse){
        parent::__construct($oRequest, $oResponse);
        AMI_Event::addHandler('on_add_status_message', array($this, 'handleAddStatusMessage'), $this->getModId());
    }
 
    public function handleAddStatusMessage($name, array $aEvent, $handlerModId, $srcModId){
        if($aEvent['key'] == 'status_add'){
            $aEvent['key'] = 'status_name_add';
            $aEvent['aParams'] = array('name' => $this->getRequestParam('nickname'));
        }
        return $aEvent;
    }
}
Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2021 © Amiro.CMS Все права защищены.