Drupal Form API - 提交时显示表单值

时间:2010-11-06 16:23:57

标签: drupal forms drupal-6

我已经阅读了Drupal API表单文档,但有些东西我没有得到。

它可能非常简单,但我无法找到如何显示表单的提交值提交后。

*已编辑的代码

<?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 个答案:

答案 0 :(得分:1)

据我所知,你不会看到这个的输出(虽然它会短暂存在),因为在调用提交处理程序后表单将重定向到同一页面 - 如果没有,你会看到表单两次,因为您在提交处理程序中打印表单以及首先打印它的位置!

我建议你放松一下

echo drupal_get_form('createForm_enigmaFilters');

将您的其他来电换成回复drupal_set_message,如:

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

这意味着您的消息将在下次实际显示页面时显示 - 即在调用提交挂钩之后。

让我知道这是否令人困惑/不起作用:)

答案 1 :(得分:0)

drupal_get_form应该调用createMyForm。

要使createMyForm_submit起作用,您需要执行

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

在你的表格中。这会为表单添加回调。

但您也应该坚持drupal编码实践,以最大限度地提高API的效率。

答案 2 :(得分:-1)

我所做的只是使用arg(x),其中x是序列中的文件夹编号。但这可能并不总是理想的。