У меня есть форма выбора таблицы, в которой перечислены несколько элементов.Когда пользователь выбирает один или несколько элементов и нажимает кнопку редактирования, я хочу, чтобы появилась новая форма, позволяющая им редактировать элементы.
У меня создается новая структура формы, но я не могузаставить его отображаться после нажатия кнопки редактирования.
В настоящее время, похоже, ничего не происходит.Я знаю, что форма выбора таблицы отправляется правильно, и функция создания формы условия редактирования работает правильно.Я протестировал его с 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.
В любом случае, я думаю, что это вся информация, которая может вам понадобиться, чтобы помочь мне.Заранее спасибо!