Как мне наложить поле с параметром с предыдущей страницы в многостраничной форме в гравитационных формах? - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу построить многостраничный.

Первая страница запрашивает имя и фамилию.

Я хочу приветствовать пользователя с его именем на второй странице.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Лучший способ сделать это - использовать теги Live Merge с заполнением чего-либо:

https://gravitywiz.com/documentation/gravity-forms-populate-anything/#live -merge-tags

Если вы сначала собрали пользователя имя в поле имени на странице 1, вы можете указать его в метке поля для поля на странице 2 следующим образом:

Hello, @ {Name (First): 1.3}

( В этом примере идентификатор поля для поля «Имя» равен 1. 3 относится к вводу имени поля «Имя» и всегда будет 3).

0 голосов
/ 03 марта 2020

Если вы избегаете использования другого плагина (как бы он ни был полезен), вы можете использовать для этого ловушки pre_submission_filter или pre_submission.

Если их имя было полем 1 и, скажем, поле, которое вам нужно показать поле 2 ...

// THESE FOUR FILTERS WORK TOGETHER TO PRE-POPULATE ALL SORTS OF STUFF, AND YOU CAN ADD TO THIS AS NECESSARY.  MINE IS ABOUT 1500 LINES LONG AND IS USED BY SEVERAL FORMS.
add_filter('gform_pre_render', 'populate_forms');
add_filter('gform_pre_validation', 'populate_forms');
add_filter('gform_pre_submission_filter', 'populate_forms', 10);
add_filter('gform_admin_pre_render', 'populate_forms');
function populate_forms($form) {

    $form_id = $form['id'];
    $current_form = 2;  // pretending the form id you are working on is 2.
    $future_form = 10; // imaginary form you'll create later for another purpose.

    switch($form_id) {

        case $current_form:
            $first_name = !empty(rgpost('input_1_3')) ? rgpost('input_1_3') : null;  // gets the value they entered into the first-name box of field 1.

            foreach ($form['fields'] as &$field) {

                if ($field->id === '2') {  // Make as many of these as necessary.
                    if ($first_name) { // make sure there's actually a value provided from field 1.

                        $field->placeholder = $first_name;  // not necessary, just habit since sometimes you'd need to have a placeholder to reliably populate some fields.  
                        $field->defaultValue = $first_name;  // this is the piece that will actually fill in the value like you'd expect to see in your question.
                    }
                }
            }
            break;

        //case $future_form: do more stuff.
          //break;
    }
    return $form;
}

Это должно стать хорошим началом для вашего функционального плагина, где вы можете заполнять текущие и будущие формы без особых хлопот. Это также можно сделать с помощью хука gform_field_value; Лично я всегда находил язык немного неуклюжим с этим.

Упомянутый ранее плагин определенно опрятен, но я обнаружил, что хочу все меньше и меньше полагаться на него.

...