Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  При $model->save() или $model->delete(), происходит редирект и ошибка 400

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 16.02.16 16:37:51 #1



Регистрация: 16.02.16
Сообщений: 5


Обратиться по имени

Создал модуль в Генераторе решений. Сделал веб-сервис, дал ему все права. Получил токен. Написал пару запросов на получение данных с eshop(item|cat|order). Получение данных по ид. Работает.
Как только дело дошло до удаления или добавления, так всегда получаю ошибку 400(Bad Request). Смотрю в Network, при отправке запроса сразу происходит редирект (301) на туже ссылку, с теми же параметрами, только удаляется поле action. При этом добавление или удаление происходит, но использовать функцию $model->getId() уже невозможно.
П.С. Это фантомное удаление происходит, когда в функции используется ->save(), ->delete()
$aEvent['items'] = array();
$oItem = AMI::getResourceModel('eshop_item/table', [['extModeOnConstruct' => 'common']])->getItem();	
$oItem->setValues($this->itemsArr);
$oItem->save();
// Дальше уже ничего не выполняется
$aEvent['item'] = $oItem->getId();
$this->oWebService->ok($aEvent);
return $aEvent;

Как правильно сделать?



Добавлено: 26.02.16 13:38:58 #2



Регистрация: 22.10.12
Сообщений: 73


Обратиться по имени

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

Временным решением будет отключение перенаправления в обработчике v5_on_ext_action, например -

AMI_Event::addHandler('v5_on_ext_action', 'cstStopModRedirect', AMI_Event::MOD_ANY);

function cstStopModRedirect($name, array $aEvent, $handlerModId, $srcModId){
    $oRequest = AMI::getSingleton('env/request');
    if($oRequest->get('modId') == 'inst_modid' && $oRequest->get('action') == 'add') {
        $aEvent['oOldEnvModule']->redirect = false;
    }
    return $aEvent;
}

Где inst_modid - идентификатор сервиса.





Создать новую тему

Всего тем: 6629
Всего сообщений: 27746
Всего зарегистрированных пользователей: 48914
Последний зарегистрированный пользователь: user74945798