Не удалось заставить работать кнопку отправки в теме формы в drupal 7
Я пытаюсь разработать модуль, который в моей форме должен быть представлен в виде таблицы. Все работает нормально, кроме кнопки отправки. Он не вызывает ни функции по умолчанию _validation или _submit, ни функции _form_alter. Я не знаю, где мне не хватает.
Вот код для моего файла.module
<?php
function mytheme_menu(){
$items = array();
$items['enqform']=array(
'title' => 'Enquiry Form',
'page callback' => 'mytheme_function',
'access arguments'=>array('access content'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function mytheme_function(){
return theme('enquiry')
}
function mytheme_theme() {
return array(
'enquiry' => array(
'render element' => 'form',
'template' => 'custompage',
),
);
}
function enquiry_form($form, &$form_state){
$form['efname'] = array(
'#type' => 'textfield',
'#title' => 'First Name',
'#size' => 28,
'#maxlength' => 10,
'#required' => TRUE,
);
$form['elname'] = array(
'#type' => 'textfield',
'#title' => 'Last Name',
'#size' => 28,
'#maxlength' => 10,
'#required' => TRUE, //make this field required
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
function enquiry_form_validate($form, &$form_state){
}
function enquiry_form_submit($form, &$form_state) {
db_insert('form_example')->fields(array(
'efname'=>$form_state['values']['efname'],
'elname'=>$form_state['values']['elname'],
'active' => 1,
)
)->execute();
}
и моя страница.tpl.php выглядит так
<?php$form = drupal_get_form('enquiry_form');?>
<h2>Please enter details here</h2>
<?php print render(drupal_render($form['efname']));?>
<?php print render(drupal_render($form['submit']));?>
<?php print render(drupal_render_children($form));?>
Когда я использую drupal_get_form в качестве обратного вызова страницы в моем меню ловушек, submit работает нормально, но назначение шаблона бесполезно. Было бы полезно сэкономить на день, если кто-то может подсказать мне, где и что мне не хватает в этом коде.
1 ответ
Я думаю, что вы не должны визуализировать drupal_render_children, вы должны просто напечатать drupal_render_children самостоятельно.
<?php print drupal_render_children($form); ?>