Помогите подсказать с выводом результатов в HTML, через Sendit

Добрый день, наверняка некоторые люди пользовались Sendit. И у меня есть пару вопросов по документации, может кто-то сталкивался и может привести примеры.

Вот есть документация, где описано что компонент умеет выводить полученный HTML на страницу.
docs.modx.pro/components/sendit/sending#obrabotka-otveta-servera
Так же прочитал что надо добавить параметр «resultBlockSelector» но нету какого либо примера как его указать.
Так же там написано «ответ должен в параметре data устанавливать ключ html со строкой в формате HTML.»
Может кто то может поделиться примером или подсказать как это реализовать, так как в документации нету примера, и я не совсем понял как оно работает.

Вот например я хотел сделать при клике на radiobutton выводить разный html

<form>
    <div class="item">
        <input type="radio" name="radio" data-si-form data-si-preset="change" data-si-event="click" value="Купить">
    </div>
    <div class="item">
        <input type="radio" name="radio" data-si-form data-si-preset="change" data-si-event="click" value="Продать">
    </div>
    <div class="resultSendit"></div>
</form>
Сам хук сделал такой
'change' => [
        'hooks' => '',
        'snippet' => 'loadSnippet'
        'resultBlockSelector' => 'resultSendit'
    ],
Сам снипет имеет такое содержание
$html = '<b>Какой то результат</b>';
return $html;
Но не понимаю правильно ли я параметры задал.

Может ли кто то показать один небольшой пример как правильно работать с этими параметрами.
А если кто то сможет подсказать как сделать что бы каждый новый выводимый результат имел возможность так же запускать отдельный новый пресет, то получит +100 к карме ))
Ruslan
14 декабря 2024, 16:45
modx.pro
128
0

Комментарии: 8

Артур Шевченко
14 декабря 2024, 18:57
0
правильно ли я параметры задал.
Неправильно. А теперь подробно.

По моей задумки, название параметра «resultBlockSelector» должно было навести любого мало-мальски опытного разработчика на мысль о том, что в качестве значения нужно указать селектор, по которому JS сможет в DOM отыскать нужный блок для вставки HTML. Поэтому очевидно, что «resultSendit» не является валидным селектором. В твоём случае нужно писать так
...
'resultBlockSelector' => '.resultSendit'
...
По поводу возвращаемых значений. В документации есть раздел Разработка с примером сниппета. Из примера видно, что для возврата значения используются методы success и error. Оба метода принимают два параметра: $msg — сообщение и $data — массив данных. Так вот в твоём случае $data должен быть таким
$data = ['html' => '<b>Какой то результат</b>'];
return $SendIt->success($successMessage,$data);
    Ruslan
    14 декабря 2024, 21:34
    0
    @Артур Шевченко Спасибо вам за ответ.

    Сделал как вы сказали, теперь вроде ошибок в консоли нет, но сам текст в ДИве который указал в «resultBlockSelector» не появится.

    В консоли вроде всё нормально и ошибок нету, выдаёт такое

    {"success":true,"message":"","data":{"hooks":"","snippet":"loadSnippet","resultBlockSelector":".resultSendit","sendGoal":"0","counterId":"","formName":"change","validate":"","html":"<b>\u041a\u0430\u043a\u043e\u0439 \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/b>"}}
      Артур Шевченко
      15 декабря 2024, 12:02
      0
      Значит пришла пора научится искать ошибки.
        Ruslan
        16 декабря 2024, 09:34
        0
        Несколько раз перечитал в документации «Начало работы» и «Отправка данных».
        Но так и не понял что я сделал не так.
        Подскажите что я упустил.
        Наверняка кто-то в будущем с этим тоже столкнётся и им этот ответ тоже поможет.
          Артур Шевченко
          16 декабря 2024, 10:16
          0
          Подскажите что я упустил.
          Я бы и рад, но не могу. Вывод из консоли браузера корректный, параметры пресета тоже, почему не выводит не знаю, надо искать ошибку.
        Володя
        16 декабря 2024, 11:01
        +2
        судя по доке у вас не хватает вот этого
        docs.modx.pro/components/sendit/snippets#primer-ispolzovaniya-7
        resultShowMethod — метод вывода результатов; insert — вставляет контент взамен имеющемуся, append — добавляет контент к существующему.
          Ruslan
          16 декабря 2024, 12:28
          0
          Я это тоже добавил, но безрезультатно.
          'resultShowMethod' => 'append',
          Не понимаю что не так сделал
            Ruslan
            16 декабря 2024, 12:56
            0
            Беру свои слова назад, поудалял кеш, всё почистил, и всё заработало.
            Наконец таки
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8