Всего 123 809 комментариев

Ок. Надо протестить. А то я помню потом заколебался его выковыривать. Куча ошибок была.
Не понял. А что MIGX работает в Modx3? Насколько я помню по sitedash.app/extras. Он не совместим.
Марат
25 марта 2023, 00:43
0
Куда поставили? У меня нет таких настроек.
Марат
25 марта 2023, 00:43
0
У кого нибудь получилось победить данную ошибку?
Источники файла менял.
Журнал ошибок — пуст.
Иван
24 марта 2023, 09:45
0
Отключите modSecurity в своем домене.

Алексей Смирнов
24 марта 2023, 08:15
+1
Посмотрите предыдущие темы по обновлению до 4.х версии:

modx.pro/components/23283

modx.pro/components/23536

Если не найдете посмотрите все последние ветки Николая через его профиль — Заметки.
Константин Ильин
24 марта 2023, 06:49
0
Дайте пожалуйста наводку. Ситуация такая
— minishop2 4.0.0 (обновлялись с 2.5)
— возможно это критично, /components/minishop2/js/web/default_custom.js и наверняка от 2.5 версии.
— есть кастомная платежка, лежит в папке components/minishop2/custom/payment/rbs.class.php

В ней реализован метод send, в конце такие строчки:
if (!class_exists('msPaymentInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/handlers/mspaymenthandler.class.php'; ///model/minishop2/mspaymenthandler.class.php
}



 public function send(msOrder $order)
    {
......
    $response = curl_exec($curl);
    $response = json_decode($response, true);
    
    curl_close($curl);
    file_put_contents(MODX_ASSETS_PATH.'rbs.txt', '-------', FILE_APPEND);
    
    if ($this->config['logging']) {
        $this->modx->log(modX::LOG_LEVEL_ERROR, '[ms2:rbs] Метод ' . $method . '  gateway request: ' . print_r($data, 1) . ' gateway response:' . print_r($response, 1));
    }
    return $response;
}
При оформления заказа file_put_contents и this->modx->log (при включенном логировании) — не отрабатывают, т.е. данный метод send вообще не запускается.

Так же если сделать alert в callbacks.submit.response.success
disk.yandex.ru/i/as4oZIV5VbkrsQ
Видно, что нет redirect, отсюда и не перенаправляет на платежку.

Если же сделать так:
$o = $modx->getObject('msOrder', 1300);
if ($payment = $modx->getObject('msPayment', array('id' => $o->get('payment'), 'active' => 1))) {
    $response = $payment->send($o);
    if (is_array($response)) {
        $response = json_encode($response, true);
    }
    exit($response);
}
То все отрабатывает и дает ссылку.

Подскажите почему может не запускаться класс оплаты при оформлении с фронта?
Баха Волков
23 марта 2023, 19:33
0
Обыкновенная переменная со ссылкой на объект document:

var D = document;
let D = document;
const D = document;

Не знаю зачем ему она, видимо для того чтобы писать короче
Александр Мельник
23 марта 2023, 18:22
0
а что за объект D к которому вы обращаетесь?
Это что какой-то поддерживаемый синоним объекта document?
Константин Ильин
23 марта 2023, 15:30
+1
буду следить (особенно жду эту фичу с дозагрузкой), понравился компонент, и сам начал пользоваться fetch в скриптах

Js ванилу не так давно начал, поэтому такие огрехи встречаются :)
let a = D.querySelector('.modalTmp form').getAttribute('data-fetchit')
Сергей Фещуков
23 марта 2023, 11:45
0
На текущий момент не работает по складам компонент, то есть реализовать нельзя такое на текущий момент. В будущем планируется такой функционал, но когда не могу сказать.
Максим
23 марта 2023, 11:43
0
Подскажите, пожалуйста, возможно ли с помощью Вашего модуля записывать остатки у товара по складам?
Баха Волков
23 марта 2023, 11:18
+1
Пожалуйста

1. Помни, это может поменяться, обращай внимания на обновления FetchIt
2. Пиши так:

let a = D.querySelector('.modalTmp form').getAttribute('data-fetchit')
// или
let a = D.querySelector('.modalTmp form').dataset.fetchit
Константин Ильин
23 марта 2023, 08:02
0
Спасибо, «кастомно» получилось

if (FetchIt === undefined){
    D.querySelector('head').append('<script src="/assets/components/fetchit/js/fetchit.js" defer=""></script>');
}
if(!empty(FetchIt)){
    let a = D.querySelector(".modalTmp").querySelector('form').getAttribute('data-fetchit')
    FetchIt.create({
        action: a,
        assetsUrl: "/assets/components/fetchit/",
        actionUrl: "/assets/components/fetchit/action.php",
        inputInvalidClass: "is-invalid",
        customInvalidClass: "",
        clearFieldsOnSuccess: true,
        pageId: hashp,
    });
}
mekirile
22 марта 2023, 22:34
0
Готов поделить расходы на доработку компонента, т.к. сам нуждаюсь в его обновлении.
Баха Волков
22 марта 2023, 20:12
+1
Если коротко, то так:

const fetchitInstance = new FetchIt(form: HTMLFormElement, config: {
  action: string,
  assetsUrl: string,
  actionUrl: string,
  inputInvalidClass: string,
  customInvalidClass: string,
  clearFieldsOnSuccess: boolean,
  pageId: number,
});

// или

FetchIt.create(config: {
  action: string,
  assetsUrl: string,
  actionUrl: string,
  inputInvalidClass: string,
  customInvalidClass: string,
  clearFieldsOnSuccess: boolean,
  pageId: number,
});

Но проблема в том, что конфиг генерируется во время рендера страницы. Так уж задумано. Я подумаю как можно облегчить такие задачи в будущем
Артур Шевченко
22 марта 2023, 19:46
+1
Всё просто. В документации к API написано куда и какие запросы слать и какой ответы ты получишь. Тебе нужно с помощью curl отправлять запросы, а потом обрабатывать полученный результат с помощью php и API Modx. Как ты оформишь код дело твое. Запускать можно или кроном или в плагинах, зависит от задачи.