Drupal Form API - отображение значений формы при отправке - PullRequest
0 голосов
/ 06 ноября 2010

Я прочитал документацию по Drupal API Form, но кое-что я просто не понимаю.Возможно, это действительно просто, но я не могу понять, как отобразить отправленные значения формы после ее отправки.

* отредактированный код

<?php

function createForm_enigmaFilters($form_state) {
    $form = array();

    $form['#submit'][] = 'createForm_enigmaFilters_submit';

    $form['list'] = array(
        '#type' => 'markup', 
        '#prefix' => '<ul id="enigmaFilters">',
        '#suffix' => '</ul>',
    );

    $form['list']['startDate'] = array(
        '#id' => 'txtStartDate',   
        '#weight' => '0',
        '#type' => 'textfield',
        '#size' => '20',
        '#title' => 'Date de début',
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    $form['list']['endDate'] = array(
        '#id' => 'txtEndDate', 
        '#weight' => '1',
        '#type' => 'textfield',
        '#size' => '20',
        '#title' => 'Date de fin',
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    $form['list']['enigmaName'] = array(
        '#id' => 'txtEnigmaTitle',
        '#weight' => '2',
        '#type' => 'textfield',
        '#size' => '100',
        '#title' => 'Nom des énigmes',
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    $form['list']['lstAnswers'] = array(
        '#id' => 'lstAnswers',
        '#weight' => '3',
        '#default_value' => 'Uniquement les bonnes',
        '#key_type' => 'associative',
        '#type' => 'select',
        '#options' => array(
            'Toutes les réponses' => 'Toutes les réponses',
            'Uniquement les bonnes' => 'Uniquement les bonnes',
        ),
        '#multiple_toggle' => '1',
        '#title' => 'Réponses',
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    $form['list']['promotionYear'] = array(
        '#id' => 'txtPromotionYear',
        '#weight' => '4',
        '#type' => 'textfield',
        '#size' => '40',
        '#title' => 'Année de promotion',
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    $form['list']['submit'] = array(
        '#id' => 'lnkApplyFilters',
        '#weight' => '5',
        '#type' => 'submit',
        '#value' => t('Rechercher'),
        '#prefix' => '<li>',
        '#suffix' => '</li>',
    );

    return $form;
}

function createForm_enigmaFilters_submit($form, &$form_state) {
    echo $form_state['values']['startDate'];
    echo $form_state['values']['endDate'];
    echo $form_state['values']['enigmaName'];
    echo $form_state['values']['lstAnswers'];
    echo $form_state['values']['promotionYear'];
}

echo drupal_get_form('createForm_enigmaFilters');

?>

Ответы [ 3 ]

1 голос
/ 06 ноября 2010

Насколько мне известно, вы не увидите вывод этого (хотя он будет существовать кратко), потому что форма будет перенаправлена ​​на ту же страницу после вызова обработчика отправки - если это не так, вы бы увидели формудважды, потому что вы печатаете форму в обработчике отправки, а также везде, где вы печатаете ее!

Я предлагаю вам потерять

echo drupal_get_form('createForm_enigmaFilters');

и поменять другие вызовы на echo на drupal_set_message , например:

drupal_set_message('start date: '.$form_state['values']['startDate']);

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

дайте мне знать, если это сбивает с толку / не работает:)

0 голосов
/ 04 октября 2011

Что я сделал, так это просто использовал arg (x), где x - это любой номер папки в последовательности. Это не всегда может быть идеальным, хотя.

0 голосов
/ 06 ноября 2010

drupal_get_form должен вызвать createMyForm.

Чтобы createMyForm_submit работал, вам нужно сделать

$form['#submit'][] = 'createMyForm_submit';

В вашей форме. Это добавляет обратный вызов в форму.

Но вы также должны придерживаться практики кодирования drupal, чтобы максимизировать свою эффективность с помощью API.

...