0
我有一个tableselect窗体列出几个项目。当用户选择一个或多个项目并点击编辑按钮时,我想要一个新的窗体出现,让他们编辑项目。在Drupal 7中,如何显示可以编辑从不同表单中选择的数据的新表单?
我有新的表单结构正在生成,但我不能让它显示在点击编辑按钮后。
目前,似乎没有任何事情发生。我知道tableselect表单被正确提交,并且创建编辑术语表单的功能正常工作。我用drupal_set_message和var export来测试它。
那么,我该如何获得新的表单?
这里是我的相关代码:
/**
* Generate form for listing terms
*/
function markit_form_terms_list()
{
$form = array();
$form['terms'] = array(
'#type' => 'fieldset',
'#title' => t('List of Terms'),
);
$header = array(t('Name'), t('ID'), t('SetID'));
$form['terms']['items'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#title' => t('Terms'),
'#options' => markit_get_array_terms(),//drupal_map_assoc($header, 'markit_get_array_terms'),
'#tree' => TRUE,
);
$form['terms']['submit'] = array(
'#type' => 'submit',
'#value' => t('Edit Term'),
'#submit' => array('markit_form_terms_list_submit'),
);
/*$form['terms']['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete Term'),
'#submit' => 'markit_form_terms_delete'
);*/
return $form;
}
/**
* Generate form to edit the terms.
* @param <type> $form
* @param <type> $form_state
* @return string
*/
function markit_form_term_edit($form, $form_state)
{
$newform = array();
$newform['termstoedit'] = array(
'#type' => 'fieldset',
'#title' => t('Edit Term/s'),
);
foreach($form_state['values']['items'] as $row)
{
if($row!=0)//if a row is not selected, it will be 0. So don't select rows equal to 0.
{
$terminfo = markit_get_markterms($row);
drupal_set_message(var_export($terminfo,true));//['term_name']);
drupal_set_message($terminfo[0]['term_name']);
$newform['termstoedit'][$terminfo[0]['term_id']] = array(
'#type' => 'textfield',
'#title' => t('Term:'),
'#default_value' => $terminfo[0]['term_name'],
'#size' => 60,
'#maxlength' => 128,
'#required' => TRUE,
);
}
}
$newform['termstoedit']['submit'] = array(
'#type' => 'submit',
'#value' => t('Edit Term'),
'#submit' => array('markit_form_term_edit_submit'),
);
drupal_set_message(var_export($newform,true));
return $newform;
}
function markit_form_terms_list_submit($form,$form_state)
{
drupal_set_page_content(drupal_build_form('markit_form_term_edit', $form_state));
}
我相信我没有使用在markit_form_terms_list_submit功能正确的代码。我尝试了几种不同的东西,但还没有奏效。我所做的Google搜索也没有帮助。我也广泛搜索了Drupal API和Drupal Form API网站。
无论如何,我想这就是你可能需要帮助我的所有信息。提前致谢!
好的提示,我会研究它。但我仍然想知道如何在没有Ajax的情况下做到这一点。 – 2010-08-02 15:48:43
正确,尝试。仍然无法正常工作。对于我的试验故事:http://drupal.org/node/872088 – 2010-08-03 16:21:46