1. Сгенерировать ошибку внутри метода action можно php исключением , например throw new Exception('Деление на ноль.'); Других вариантов я не нашел. Если они есть подскажите! 2. При использовании csrf - нужно id сессии передавать в параметре с именем sessid 3. При обращении к модулю(vendor.module) нужно точку заменить не на нижнее подчеркивание, а на : 3. Передача параметров компонента. В видео это есть , в статье ничего не написали.
С начало нужно описать какие параметры нужно подписать и передавать в ajax запросах. Описываются они в методе listKeysSignedParameters при реализации интерфейса Bitrix\Main\Engine\Contract\Controllerable
protected function listKeysSignedParameters()
{
return [
'IBLOCK_ID',
'ACTIVE_SECTION_ID'
];
}
При запросе в параметр с именем signedParameters нужно передать значение сгенерированное $this->getComponent()->getSignedParameters()
Я пишу на jquery и в мох модулях использую такую конструкцию
//Инициализация модуля в шаблоне компонента
new myModule({
csrf: '<?=bitrix_sessid()?>',
signedParameters: '<?=$this->getComponent()->getSignedParameters()?>'
});
Во всех своих модулях использую вот такой метод для отправки запросов
myModule.prototype.send = function (action, params, callback) {
params.signedParameters = this.options.signedParameters;
params.sessid = this.options.csrf;
params.action= action;
var data = new FormData();
$.each(params, function (i, v) {
data.append( i, v);
});
$.ajax({
url: this.options.ajax,
type: 'POST',
data: data,
success: callback,
processData: false,
contentType: false,
error: function (jqXHR, textStatus, errorThrown) {
$.error('ОШИБКИ AJAX запроса: ' + textStatus );
}
});
}
//Использование send
myModule.prototype.foo = function()
{
this.send('getMyData', {param1: 1, param2: 2}, function(response){
// работаю с ответом
});
}
Большагин Вячеслав написал: 1. Сгенерировать ошибку внутри метода action можно php исключением , например throw new Exception('Деление на ноль.'); Других вариантов я не нашел. Если они есть подскажите!
Если делать метод action не статическим то можно вызывать методы addError и addErrors через $this. Это в случае когда запросы делаются на файл ajax.php.
Сгенерировать ошибку внутри метода action можно php исключением...
Нашли другой выход? Также я пытаюсь выбросить Exception, но status все равно success. Почему? public function sendMessageAction(): string { $i = 0; try { if ($i === 0) { throw new Exception('Ошибка'); } } catch (Exception $e) { return (string) $e->getMessage(); // status: success } }
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».