We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
  • ага тут подумал:)
    а зачем вам eform
    создаете форму и через post отправляете данные на нужную страницу
    далее простым снипетом, можно даже через phx выводите в нужных местах данные из масива
    и все smiley
      http://modx.im - Russian community
      http://extras.evolution-cms.com - Repository for Evolution
      • 31268
      • 111 Posts
      Quote from: dmi3y at Jun 15, 2011, 10:14 PM

      А кто вам мешает весь шаблон страницы вывести в чанке Eform
      тогда после отправки вы получите чистый лист для шаблона thankyou

      как вариант smiley
      чистый лист не получится - выведет страницу с тем же шаблоном
      thankyou - будь то чанк или страница - представляет собой кусок html кода (с тв параметрами), который вставляется вместо формы на ту же страницу (с неизменным шаблоном)
        Discere ne cesses
        • 31268
        • 111 Posts
        Quote from: dmi3y at Jun 15, 2011, 10:17 PM

        ага тут подумал:)
        а зачем вам eform
        создаете форму и через post отправляете данные на нужную страницу
        далее простым снипетом, можно даже через phx выводите в нужных местах данные из масива
        и все smiley


        как костыль - так и сделал - в чанке eform указал action на указанную страницу, где и разобрал _POST
        Но мне нужна валидация, и желательно средствами eform
          Discere ne cesses
          • 31268
          • 111 Posts
          Вот по хорошему (в теории):
          на этапе BeforeMailSend надо заполнить чанк-темплейт переменными (в этом проблем нет) и вывести страницу с содержимым этого чанка (а вот тут уже проблема),
          либо каки то образом (уже из области фантастики) пробросить массив _POST в gotoid страницу
            Discere ne cesses
            • 31268
            • 111 Posts
            И так, рассказываю:
            Для того, чтобы реализовать вывод документа на основании данных eForm нужно выполнить следующее:
            1. Создаем сниппет eFormEvent (название не приниципиально)
            <?php
            if(!function_exists("postSession")){
                function postSession(&$fields) {
                    $_SESSION['post'] = array();
                    foreach ($fields as $key => $value) {
                        $_SESSION['post'][$key] = $value;
                    }    
                    return true;
                }
            }
            return "";
            ?>
            

            2. Создаем чанк blank.tpl с формой необходимого бланка (указаны плейсхолдеры из полей формы)
            <h1>[+lastname+]</h1>
            <h2>[+firstname+]</h2>
            <h3>[+phone+]</h3>

            3. Создаем сниппет postProcess, который будет заполнять плейсхолдеры чанка на целевой странице:
            <?php
            $chunk = $modx->parseChunk('blank.tpl', $_SESSION['post'], '[+', '+]');
            return $chunk;
            ?>

            4. На странице с формой пишем:
            [!eFormEvent!]
            [!eForm? &formid=`actionsForm` &tpl=`form.tpl` &gotoid=NNN &noemail=1 &eFormOnBeforeMailSent=`postSession`!]

            где NNN - это id целевой страницы с бланком.
            Обращаю внимание на некешируемый вызов сниппетов: если указать [[eFormEvent]] будет PHP Fatal error: Call to undefined function postSession()
            5. На странице с бланком вызываем сниппет postProcess:
            [!postProcess!]


            Таким образом мы получили страницу с уникальным шаблоном, заполненную данными на основании формы eForm с валидацией и прочими радостями.
            Можно конечно и eMail отправлять (убрать параметро noemail), но в моей задачи это не требовалось.
              Discere ne cesses
              • 2744
              • 8 Posts
              подскажите пожалуйста как настроить eform валидацию, чтобы была проверка на то, что если заполнено определенное поле, то не отправлять форму?
              То есть у меня скрытое поле, которое не нужно заполнять,оно должно оставаться пустым.
                • 1788
                • 1,103 Posts
                Quote from: banditos at Aug 18, 2011, 08:38 AM

                подскажите пожалуйста как настроить eform валидацию, чтобы была проверка на то, что если заполнено определенное поле, то не отправлять форму?
                То есть у меня скрытое поле, которое не нужно заполнять,оно должно оставаться пустым.
                http://wiki.modxcms.com/index.php/EForm#Extended_Server_Validation
                  • 2744
                  • 8 Posts
                  я не очень понимаю как это реализовать? есть решение?
                    • 1788
                    • 1,103 Posts
                    Quote from: banditos at Aug 19, 2011, 06:20 PM

                    я не очень понимаю как это реализовать? есть решение?
                    А так понятнее?
                    http://ваш_сайт/assets/snippets/eform/docs/eform_examples.htm
                    Смотрите пример.
                      • 2744
                      • 8 Posts
                      причем тут этот пример))