Выполнение GetResources через AjaxForm

Здравствуйте!
Помогите, пожалуйста, понять, как вызывать через AjaxForm сниппет GetResources (да или любой другой, что не важно)?
Вот описанный Василием пример простейшего сниппета, который можно вызвать через AjaxForm. Он ничего не делает, говорит только, да или нет. А куда здесь написать вызов runSnippet, чтобы он заработал на странице? Ведь, я так понимаю, return $AjaxForm возвращает только уведомления?
<?php
if (empty($_POST['name'])) {
    return $AjaxForm->error('Ошибки в форме', array(
        'name' => 'Вы не заполнили имя'
    ));
}
else {
    return $AjaxForm->success('Форма прошла проверку');
}
Дмитрий
27 января 2016, 15:10
modx.pro
1
1 373
0
Поблагодарить автора Отправить деньги

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

Василий Наумкин
28 января 2016, 09:16
0
Нужно внутри этого сниппета сделать то, для чего ты отправляешь форму и выдать ответ — хорошо всё прошло, или не очень.

Нужно вызывать getResources — вызывай. Нужно отправить письмо — отправляй. AjaxForm требует только JSON ответ установленном формате, как его выдать — я и показываю в примере.
    Дмитрий
    28 января 2016, 12:34
    0
    В этом вся и проблема. Не могу понять, как и куда написать вызов сниппета? Делал уже по-всякому, перечитал кучу примеров по вызову других сниппетов, по вызову сниппетов через ajax, но вот на AjaxForm ничего такого нет (его по ходу только для FormIt используют, как не жаль).
    Делаю примерно так:
    <?php
    if (empty($_POST['W'])) {
        return $AjaxForm->error('Ошибки в форме', array(
            'name' => 'Вы не заполнили имя'
        ));
    }
    else {
        $params['parents'] = '1';
        $params['sortby'] = 'menuindex';
        $params['tpl'] = 'tpl';
       
        $res = $modx->runSnippet("getResources", $params);
        return $AjaxForm->success('Отлично!'); 
        echo $res;
    }
    Success приходит и все.
    Но если рядом запустить простой сниппет, в котором будет только
    $params['parents'] = '1';
        $params['sortby'] = 'menuindex';
        $params['tpl'] = 'tpl';
       
        $res = $modx->runSnippet("getResources", $params);
        echo $res;
    Все успешно вываливается. Что, что же я делаю не так?(
      Василий Наумкин
      28 января 2016, 13:00
      0
      Ты бы почитал про PHP, что-нибудь.

      Например то, что после return ничего не выполняется.
        Дмитрий
        28 января 2016, 18:13
        0
        Извиняюсь за приступ идиотизма. Действительно, сначала пихал после return'a, потом засунул в echo перед return'ом, потом все-таки додумался в ответ $AjaxForm отправить и default.js поправить.
        Надеюсь, это хорошее решение?
          Василий Наумкин
          28 января 2016, 18:14
          0
          Не знаю, зачем тебе пришлось править default.js, но ответ пихать в ответ (простите за тавтологию) — правильное решение.
            Дмитрий
            28 января 2016, 18:20
            0
            иначе никак html не мог вывести.
            В сниппете сделал вот так.
            $params['parents'] = '1';
                $params['sortby'] = 'menuindex';
                $params['tpl'] = 'cranes-tpl';
               
                $res = $modx->runSnippet("getResources", $params);
                return $AjaxForm->success('Отлично!', array(
                    "res" => $res));
            Плюс в default.js просто по success вывел html в нужный слой.
            Подозреваю, что можно как-то иначе…
            p.s. кодер из меня и правда хреновый, но я учусь
              Василий Наумкин
              28 января 2016, 18:26
              0
              Если надо что-то в HTML выводить, то да, иначе никак.

              Но советую для вывода ресурсов через Ajax использовать более подходящие решения, типа pdoPage.
                Дмитрий
                28 января 2016, 18:30
                0
                Я мастерю что-то вроде онлайн калькулятора, где по заданным параметрам будет вывод нужной техники, поэтому pdoPage тут не поможет. Но о функционале pdoPage я знаю, как раз еще один проект делаю именно при помощи него в ajax режиме.
                Спасибо за помощь!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8