You are here

6确认页面

admin 的头像
Submitted by admin on 星期三, 2015-06-17 09:04

 作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    接下来,让我们看一下确认页面的回调代码:

 

/**

 * “确认”页面的回调函数

 */

function contactus_confirm_page(){

  //我们为这个页面设置标题

drupal_set_title('联系我们');


//这里首先作了判断,如果会话中没有设置contactus_form,返回contactus

if(empty($_SESSION['contactus_form'])){

drupal_goto('contactus');

}else{

}

 

$render_array = array(

  '#markup' => '', 

);

//该页面的正文为一个表单,注意对于表单,这里需要使用drupal_render呈现一下。

$render_array['#markup'] .= drupal_render(drupal_get_form('contactus_confirm_form'));

//Drupal7的页面回调,返回的应该是一个数组

return $render_array;

}

 

    这段代码和前面的类似,只是在函数的前面作了一下检查,检查会话中没有设置contactus_form,如果没有,则返回到“联系我们”页面。如果设置了,则会呈现确认表单,我们来看一下确认表单的定义:

 

/**

 * “确认”表单的构建函数

 */

function contactus_confirm_form(){

  //添加我们自己的CSS,用来控制表单的样式

drupal_add_css(drupal_get_path('module', 'contactus').'/contactus.css');

//drupal_set_message(print_r($_SESSION['contactus_form']));

//表单元素“姓名”

$form['name'] = array(

'#title' => t('姓名'),

//表单元素的类型,这里为item

'#type' => 'item',

//'#default_value' => $_SESSION['contactus_form']['name'],

//表单元素的#markup,Drupal6下面,我用的是#value,7下面就无法工作,改为了#default_value,还是不行,

//最后改为#markup,才可以了

'#markup' => isset($_SESSION['contactus_form']['name'])?$_SESSION['contactus_form']['name']:"",

);


  //表单元素“单位名称”

$form['company_name'] = array(

'#title' => t('单位名称'),

'#type' => 'item',

//这是我在调试的时候,使用#value#default_value#description分别测试时的代码,这里保留了。

//'#value' => $_SESSION['contactus_form']['company_name'],

//'#value' => '123456',

'#markup' => isset($_SESSION['contactus_form']['company_name'])?$_SESSION['contactus_form']['company_name']:"",

//'#description' => '123456',

);


//表单元素“电子邮件”

$form['mail'] = array(

'#title' => t('电子邮件'),

'#type' => 'item',

'#markup' => isset($_SESSION['contactus_form']['mail'])?$_SESSION['contactus_form']['mail']:"",

);


//表单元素“电话号码”

$form['phone'] = array(

'#title' => t('电话号码'),

'#type' => 'item',

'#markup' => isset($_SESSION['contactus_form']['phone'])?$_SESSION['contactus_form']['phone']:"",

);


  //表单元素“邮件正文”

$form['contact'] = array(

'#title' => t('邮件正文'),

'#type' => 'item',

'#markup' => isset($_SESSION['contactus_form']['contact'])?$_SESSION['contactus_form']['contact']:"",

);


//表单元素“访问来源”

$form['visit'] = array(

'#title' => t('访问来源'),

'#type' => 'item',

'#markup' => isset($_SESSION['contactus_form']['visit'])?$_SESSION['contactus_form']['visit']:"",

);


//如果访问来源,我们选择了“其它”,此时使用other表单元素的值来替换$form['visit']['#markup']

if( isset($_SESSION['contactus_form']['visit']) && $_SESSION['contactus_form']['visit'] == 'other'){

$form['visit']['#markup'] = isset($_SESSION['contactus_form']['other'])?$_SESSION['contactus_form']['other']:"";

}

/*

//表单元素“返回”按钮

  $form['back'] = array(

    '#type' => 'submit',

    '#value' => t('返回'),

    '#submit' => array('contactus_confirm_form_back'),

  );

//表单元素“提交”按钮

  $form['submit'] = array(

    '#type' => 'submit',

    '#value' => t('提交'),

  );

  */


  //表单元素“返回”图片按钮

  $form['image_back'] = array(

    '#type' => 'image_button',

    '#src' => drupal_get_path('module','contactus').'/images/button2-1.jpg',

//使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_back

    '#submit' => array('contactus_confirm_form_back'),

    '#executes_submit_callback' => TRUE,

//为表单元素添加两个属性,onmouseoutonmouseover,为了在鼠标移到按钮上时,显示不同的图片效果

    '#attributes' =>array(

      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-1.jpg'",

      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-2.jpg'",

    ),

  );


  //表单元素“提交”图片按钮

  $form['image_submit'] = array(

    '#type' => 'image_button',

    '#src' => drupal_get_path('module','contactus').'/images/button3-1.jpg',

    '#executes_submit_callback' => TRUE,

//使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_submit

    '#submit' => array('contactus_confirm_form_submit'),

    '#attributes' =>array(

      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-1.jpg'",

      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-2.jpg'",

    ),

  );

  

  return $form;

}

    这个确认表单,其实比前面的第一表单还要简单一些,这里主要就用到了item元素。而图片按钮的用法则和前面一致。对于item元素,我最初使用'#value'属性,后来改为'#default_value'属性,但总是显示不出来值,最后才改用'#markup'。注释里面讲到了这一点,这里再强调一下,因为在Drupal6里面,我用的是'#value'属性,能够正常工作,在Drupal7下面却显示不出来,所以这里给以前熟悉Drupal6的开发者提个醒,避免出现同样的错误。

 

    对于这个确认页面,我们仍然为其添加了CSS文件,用来控制样式,当我们提交表单后,得到一个如下图所示的确认表单。


Drupal版本: