我已经阅读了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');
?>
答案 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是序列中的文件夹编号。但这可能并不总是理想的。