我想在每个页面的colorbox中显示自定义表单(这是自定义模块)。
我已经在drupal7中创建了表单,如果我通过在url中调用它来运行它,则工作正常,但我需要在colorbox中调用此模块。
我的自定义模块(regform)代码是
function regform_init() {
drupal_set_message('Our module is alive!');
}
function regform_menu() {
$items = array();
$items['regform'] = array(
'title' => 'Custom page',
'page callback' => 'drupal_get_form',
'page arguments' => array('regform_form'),
'access arguments' => array('access content'),
'access callback' => TRUE
);
return $items;
}
function regform_form($form, &$form_state) {
$form['#suffix'] = '<div id="test-ajax"></div>';
$form['email'] = array(
'#type' => 'textfield', //you can find a list of available types in the form api
'#title' => 'Enter Email',
'#size' => 50,
'#maxlength' => 50,
'#required' => TRUE, //make this field required
);
$form['submit_button'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#validate' => 'regform_form_validate',
'#ajax' => array(
'callback' => 'regform_form_ajax_callback',
'wrapper' => 'test-ajax'
),
'#submit' => array('regform_form_ajax_callback'),
);
return $form;
}
function regform_form_ajax_callback($form, &$form_state) {
/*Fire database query*/
/*Validation msg div block call here*/
return "<div id='test-ajax'></div>";
}
function regform_form_validate($form, &$form_state) {
if (trim($form_state['values']['email']) == ''){
form_set_error('email', t('Please Enter Email'));
}
if(!valid_email_address($form_state['values']['email'])){
form_set_error('email', t('Enter Valid Email'));
}
}
function regform_form_submit($form, &$form_state) {
$form_state['rebuild'] = TRUE;
$form_state['input'] = array();
}
这个表单运行正常。
我也不知道如何在drupal 7中使用colorbox。
任何帮助都将不胜感激。
我建议使用混乱工具模态弹出窗体。它很容易实现和集成到Drupal 7中。
Ctools模态表单的一个很好的例子在这里
对于Drupal中的模态表单,我强烈建议您查看一下chaos工具。它提供了一个很棒的AJAX API(可以处理表单提交)。
还有一个模块你可以看一下,情态动词。它是建立在Ctools之上的,提供了一种简单的方式来显示窗体的模式。