国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal教程] Drupal 7 中文教程 联系我们 两步表单 module 文件教程

[复制链接]
发表于 10-13-2011 02:27 | 显示全部楼层 |阅读模式
1.Drupal 7 中文教程 联系我们 两步表单 module 文件 代码部分
: p% _/ T% g& O: D9 X' k<?php
* l/ ^* d% p8 ~- N. O/**
, B% ?( R2 ^0 k9 _: W * @file& I! J! E2 I: t$ F
* 方便用户联系我们.
0 J# I4 v. w3 f1 n */6 `2 i! ^$ y; n1 i* F$ |
/**
* ]5 D5 c) ~4 u" X, v * 实现钩子hook_menu().
' |; A; P" n6 e, A# B: b. R */
6 e/ D$ i8 z. ~4 v6 Y% f+ }function contactus_menu() {7 p0 O( Z6 ~9 M( r$ X! g3 V- W
  $items = array();
: K4 H/ I. C$ x1 n7 ]% T //联系我们菜单项
$ {4 k3 X+ f  f! B7 x4 t9 e  $items['contactus'] = array(
* p6 G  ^. [9 z; i+ A! H    'tilte' => '联系我们',) X& A/ M1 R  g" y6 V$ ]
      'page callback' => 'contactus_page',3 L: w( b+ |  G4 n" z# x6 l+ C+ Y
      'type'     => MENU_CALLBACK,+ H8 b2 O7 {* \
      'access callback' =>TRUE,  U$ U, |6 ~" y4 V0 t
   'file' => 'contactus.pages.inc',
0 o! B8 p; a+ K$ Q- H" h  );+ p+ ^# k% g# N) b6 x6 `/ j" Z5 D
//确认页面菜单项
5 N8 r6 c. b0 s7 S& P3 Y- x8 X  $items['contactus/confirm'] = array(3 t  F5 H( G& Y- _0 l
      'page callback' => 'contactus_confirm_page',! [& L7 e' M4 c' ]& C6 H" G
      'type'     => MENU_CALLBACK,* v4 u# C0 I' {* S# B- e
      'access callback' =>TRUE,
5 i# P! z  I& D; ^% x( d, e* V   'file' => 'contactus.pages.inc',
7 r9 c) k4 C( w/ |- W- T3 q% K  );  S/ M) s" j* ^* Z: W$ u0 B: n, W" _
//致谢页面菜单项
/ ]! N) x0 G- V3 ~1 S' B  $items['contactus/thanks'] = array(
4 t% y2 k5 m" E8 X' g9 H      'page callback' => 'contactus_thanks_page',
4 W0 r# M3 w. e3 j, N# |3 c: f      'type'     => MENU_CALLBACK,. l0 w5 o: O  e9 \5 E/ o6 N% R
      'access callback' =>TRUE,
& B2 I6 B; g3 s   'file' => 'contactus.pages.inc',# T! H& F5 k1 N. m+ B8 X9 {
  );8 f5 z1 W, c. v, l7 n& s1 E+ \+ F1 G
  return $items;
2 t/ ^5 y# Z" P( m}
8 g  V+ x( a. P; s$ {- |& P$ V- o$ F/**
9 s. y- Q* _  G  |: o# D" S9 l2 H * 实现钩子hook_mail().) a" t8 n5 }+ M: M& \
*/
3 Z4 `9 F: z; @# l+ X7 _' n4 rfunction contactus_mail($key, &$message, $params){0 _/ l) b0 D3 g7 d1 S. p4 ]4 H9 e
$language = $message['language'];8 r0 `% W; ]' u5 t% `3 h. q# }
  switch ($key) {
; w3 d5 ?1 {/ C/ {. l   case 'contact':
; M; m0 t, {" F& |. y  8 T  P' k' C% F9 j- b# l
    //邮件的标题
7 J+ N! x$ t/ X) j) q0 Q5 O    $message['subject'] = '联系我们';
) g) z' I: E) D) E Drupal 7 中文教程 联系我们 两步表单 module 文件 代码部分 7 Q. F- u( I( H& W* J' N
  . A/ N3 r, m: E( U9 s9 Q! q" D
   //邮件正文,这里面包含:姓名、单位名称、电子邮件、电话号码、邮件正文、访问来源
, _: [  b: x" q0 L+ D/ R( G      $message['body'][] = '姓名:'.$params['name'];
; s$ w2 M! s/ k, j7 L' x5 B      $message['body'][] = '单位名称:'.$params['company_name'];
% w5 A" |* _' t! `      $message['body'][] = '电子邮件:'.$params['mail'];
. o9 U: r3 v) n# \" O      $message['body'][] = '电话号码:'.$params['phone'];
( G% k8 T1 l! p& z; i7 X# Q      $message['body'][] = '邮件正文:'.$params['contact'];
& b# ?) L, [, p! d$ J   . \( _" I) x4 w( ]) k6 s
      //对于访问来源,如果visit的值我们选择了“其它”,那么此时我们取$params['other'],否则取$params['visit']
' N9 [  q9 D- x% H      $visit = "";
! h1 K: @0 Z9 D      if($params['visit'] == 'other'){
9 n% F# c) c4 x6 l1 t8 k6 S+ N% A        $visit = $params['other'];
7 }8 H# z4 P( U2 @! b      }else{
0 y- Y, o* p- B, M( L( M        $visit = $params['visit'];( W- f# t( P. \2 r6 t$ f
      }2 d7 e2 o- _1 a0 `# ]2 k; y$ s$ l
      $message['body'][] = '访问来源:'. $visit;8 q6 t* e9 x# m+ V
  }" G5 f; J# _: K1 o5 B0 r
}
/ f! f, h$ k  W4 H2 g( _# j. E; H  [
/ I6 ?# n4 f6 f* B, b' ^8 q. u9 I+ e$ g8 }$ ]) k% b

" H* q9 n8 A! E7 d$ B. T& |7 J0 l' ~* C
2.Drupal 7 中文教程 联系我们 两步表单 “联系我们”页面回调
& t4 u2 _( P, t<?php/**
  v: W$ R% j" m9 f& Q6 |# g% F2 u * @file  `+ s3 C/ @$ a# A; K* f
* 各种页面的回调函数.% m) O, \- f! v& R
*/
" t: k7 q4 ~5 X5 M5 I; R& I 8 Z! d( s9 V, y9 b/ m. q, i
/**
; l" i) S# K% c( x7 V * “联系我们”页面的回调函数/ |7 _6 w. s: s" r# u1 y
*/
  f- l7 G. m) F8 [( k/ Ifunction contactus_page(){
* I& B% D9 r' O* e$ k/ R- G, G  //我们为这个页面设置标题
1 ^" {7 P/ k" O$ [8 L drupal_set_title('联系我们');" X6 }  m3 \$ n' _- z4 N
5 b- Y* g4 |; A  H4 [' S4 C' a) G$ Z
$render_array = array(& w# Z! \- W; M3 _
   '#markup' => '',
& I. h8 B  z  N );
# n) s! c/ r+ l( R2 Z
2 j' ^/ ?: D2 P) x //该页面的正文为一个表单,注意对于表单,这里需要使用drupal_render呈现一下。
/ o- \( c: ~2 Z $render_array['#markup'] .= drupal_render(drupal_get_form('contactus_form'));& h/ q% h0 A5 R! E( L

& U/ |! h6 R2 ^$ r$ ` //Drupal7的页面回调,返回的应该是一个数组5 [9 v& r* L1 [, ~4 E3 N& F3 w
return $render_array;
9 M/ e, p' D; T0 {4 M! g& \! Z1 V}/**; |" o9 p* F' D2 c. a
* “联系我们”表单的构建函数) ?4 v: V4 C2 ]$ Z$ R3 z$ {
*/; \7 D' n$ l! q& x6 [7 x3 c- D8 I
function contactus_form(){; P: A3 h% g& {( G: [2 s8 c* Y
  //添加我们自己的CSS,用来控制表单的样式2 x, h# F/ z. b6 ]
drupal_add_css(drupal_get_path('module', 'contactus').'/contactus.css');
7 J/ e) f* ]0 o7 [: v/ m2 [% G
+ @6 C. U  i) |  y  //提示信息,默认为markup类型。
( F( m" h8 N: u9 C0 @ $form['tips'] = array(
: M% m0 m6 d0 V- f3 R6 [6 I" W  '#prefix' =>'<div id="tips">',
5 }6 |/ S* R$ b" x2 g3 c  '#markup' => t('<span class="form-required">*</span> 号为必填项。'),. {* R) v1 Y( S
  '#suffix' =>'</div>',' F7 _" Y6 W6 I  d5 N2 i
);0 m$ k, U/ O8 y2 `" F/ ~

- Q- `0 Y+ v) C //表单元素“姓名”
, E7 s) d$ Z5 j" z. h5 V5 A: s $form['name'] = array(6 T! A. Q4 e- _* l
   //表单元素的#title属性,对应于实际输出中的label6 ^0 V+ Y" r7 O! G& z. y" Y
  '#title' => t('姓名'),2 v1 A1 G3 R% i" ?9 U4 N7 X- G- G+ `
  //表单元素的类型,这里为textfield2 l' T2 v4 K% _$ r+ F& \+ d
  '#type' => 'textfield',+ Q/ ^& x$ _% R/ A
  //这个表单元素是必填的+ Y9 a& C, R. }/ b8 J9 c
  '#required' => TRUE,* X2 }9 g8 f: `, C& f1 |2 n
  //表单元素的默认值,这里使用了三位运算符和isset进行判定; t- [: r) X! `; u* ^
  '#default_value' =>isset($_SESSION['contactus_form']['name'])?$_SESSION['contactus_form']['name']:"",
9 Y2 {0 J: X1 c5 Z5 l5 V; a. W  //表单元素的描述,% P# o4 p- z& C3 c5 z3 Y
  '#description' => t('例如:周星驰'),  v8 \) M& a# \, x, r; ?
);3 E4 j0 B- M7 o$ i2 w7 E* M  }
# ^5 {' L$ Q1 v& B
  //表单元素“单位名称”
& B6 v+ i$ q4 p $form['company_name'] = array(0 ^3 I' U! b& |6 v9 H0 d- R7 n% K
  '#title' => t('单位名称'),; @6 {3 d1 u- T. |2 Z* @. ^
  '#type' => 'textfield',
! O  I; Q, P- u( k( v& {: m  '#required' => TRUE,
1 C. G# E9 Y" j  '#default_value' =>isset($_SESSION['contactus_form']['company_name'])?$_SESSION['contactus_form']['company_name']:"",
) h" ^0 u/ `( @' Z1 \4 t  X  O7 B  '#description' => t('例如:北京无名信息技术公司'),2 f! d$ U5 N+ y# t0 w" ?+ Z
);
0 w/ ?% f( |: m
0 T: |+ w. J% a. i4 I' n/ U7 W" I  //表单元素“电子邮件”
9 \  H9 ^' \5 ~ $form['mail'] = array(
- s  z) ?" x3 L: y, v  '#title' => t('电子邮件'),; j( h6 e  ~' t
  '#type' => 'textfield',
& |: y9 N2 Q8 m  '#required' => TRUE,
: M3 A3 a6 I3 Q4 ]4 R3 Y  '#default_value' =>isset($_SESSION['contactus_form']['mail'])?$_SESSION['contactus_form']['mail']:"",
) P/ ^( `3 }% |* m% T6 C' O  '#description' => t('例如:info@example.com'),
$ k. n1 k- \2 K# ] );
- D9 l; s. `0 a; P6 p/ F2 g8 P
: q" u5 B& a! D+ j" P( B //表单元素“电话号码”5 r' s* v) e" o) _6 @1 m8 Q! |
$form['phone'] = array(/ `+ B7 `5 h* Y/ S$ `; R+ ?- V; M
  '#title' => t('电话号码'),
3 ^  c5 M4 @% h/ M3 ^8 r  '#type' => 'textfield',
, Q! ^# M( n3 c  ~  '#required' => TRUE,# y* |  h0 M0 \1 m4 d6 ^( _  g
  '#default_value' =>isset($_SESSION['contactus_form']['phone'])?$_SESSION['contactus_form']['phone']:"",
/ G' c+ t3 C) r  '#description' => t('例如:010-88888888'),3 @2 s5 C3 P' o6 B
);7 G. G2 M! p% V# ]
! d# n: ?/ s  u
  //表单元素“邮件正文”
2 s" x4 V* {, m$ z/ b% U4 @ $form['contact'] = array(& t/ Q+ A2 u* K8 B- m& l0 t  u
  '#title' => t('邮件正文'),
, q* R; N# f  Z4 q, D, B" j4 ]% U- X" k  //表单元素的类型,这里为textarea5 g9 l' f$ J' p
  '#type' => 'textarea',) ^" o8 F4 l2 l" \% V/ V( W# j
  '#required' => TRUE,
% G3 Z- b! y8 }/ H# m  '#default_value' =>isset($_SESSION['contactus_form']['contact'])?$_SESSION['contactus_form']['contact']:"",
; Y2 u3 K1 A6 _; i: B4 A  ~% A* l );
) A! x; f: K1 O$ i2 q 9 @9 [1 n: K  a4 Z) ~& X
//访问来源的可选项/ s+ S/ F; L1 [  E( b5 Z0 E/ ~
$visit_options = array(
( w: Z* w9 L4 A7 ]  'baidu' =>t('百度'),: w  [8 b$ Z0 i+ b6 ], q- h( N
  'google' =>t('谷歌'),9 {% a* h5 I) M% M2 U. Z
  'sohu' =>t('搜狐'),
* z0 A- U) J, Q" z, S  'other' =>t('其它'),2 Q: m6 p" Z' ~9 ~
);
- g( J/ z" b) k5 k. A% | //表单元素“访问来源”/ Q4 `7 z2 U5 n3 E, g2 L% h/ ?  U9 c
$form['visit'] = array(
9 r/ ]; B+ C( F! s" y5 e  '#title' => t('访问来源'),
8 q3 b1 q; R) a- I% i9 q  //表单元素的类型,这里为radios3 Y! M' Q9 G8 z1 u  f& a3 h
  '#type' => 'radios',) R/ K' P" @4 b8 Q8 N2 e
  //单选按钮的可选项。
: L) {0 V& h  }2 F' J  '#options' => $visit_options,
$ W$ M* @! V8 A3 g0 B9 ?3 R  '#default_value' =>isset($_SESSION['contactus_form']['visit'])?$_SESSION['contactus_form']['visit']:"",3 O3 B# a/ _- G3 P) L* o; Y
  //为了便于控制radios的外观,我们使用#prefix、#suffix为其添加了一个带有ID的div
5 |* i1 F( z0 u4 d, h  '#prefix' => '<div id="visit-radios">',
+ S% J/ R$ O! x# ~9 H5 d  '#suffix' => '</div>',) b4 a9 n! w" N6 |2 K* r( U
);- \; A1 v; |( `" v* j  k: X# c
7 D3 g* Q, g0 H- x( f1 G
//表单元素“其它”,它依赖于表单元素“访问来源”' a/ |5 `. j0 o" w  P& }) X7 k
$form['other'] = array(
  l3 h8 T# I/ g8 k; a0 G- v9 c  '#title' => t('其它'),/ x2 c( V4 b7 E1 q7 f. v
  '#type' => 'textfield',) U1 t) G/ X! {4 `. g7 g* _( }/ g9 P
  '#default_value' =>isset($_SESSION['contactus_form']['other'])?$_SESSION['contactus_form']['other']:"",9 C5 w6 N* L% ]6 M
  //这里的意思是,当表单元素“访问来源”的值为“other”时,这个表单元素才显示出来5 Z, z$ i- b7 }+ c
   '#states' => array(1 x) T6 r/ a. R; x8 {. v
    'visible' => array(
; `; ^' A4 s# }. {$ I% y; ^, |     ':input[name="visit"]' => array('value' => 'other'),% W8 z5 |; J( k$ q/ Z
   ),
- a3 v  I( r$ w. f/ P+ X5 N$ B" M  ),
0 s3 J' z( ]3 @3 N1 y );
8 ~; Z9 N4 G0 r, ?/ D" t /*
0 i) C9 ^, L8 C; F1 `; H4 Q //表单元素“确认”提交按钮* q8 `! ]+ L! y; N8 W
  $form['submit'] = array(
3 H, p7 O2 d6 G    '#type' => 'submit',! ?, G0 X8 i0 R) _) k% |6 W
    '#value' => t('确认'),
- K; Z; X! P+ z, y. E' }  );& |, \" s0 `- Z8 i5 v4 P
  */
8 {8 g1 J* m4 K1 \5 I
5 o, i$ D" }# [, P3 q  //表单元素“确认”提交按钮,这里采用了图片的形式6 h4 V2 m' [0 D( w+ k
  $form['image_submit'] = array(
# |+ A3 F" n; N0 G" a7 [   //表单元素的类型,这里为image_button
5 Z1 p4 L( R9 Y+ J    '#type' => 'image_button',% q; w- [! b( m# F/ _/ v
  ( A2 L6 u9 g$ @- h( g
  //图片按钮特有的#src属性,! q$ }' L; g) d4 E' [/ A0 y9 O* d
    '#src' => drupal_get_path('module','contactus').'/images/button1-1.jpg',
; S( e% v) w2 o" e7 b    '#value' => 'image_sub',& _8 d/ R. f* U. ?8 |
  
! l# E9 l8 Y: o+ f8 p- _  //为表单元素添加两个属性,onmouseout、onmouseover,为了在鼠标移到按钮上时,显示不同的图片效果
! x" L  j+ q! _1 k( h/ {. Z  L6 D    '#attributes' =>array(
; h: L. M" l5 X      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button1-1.jpg'",2 M( x9 B, W4 X, q9 k  y2 D, F
      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button1-2.jpg'",
* r6 F& |  |* c# [    ),+ j& d2 G5 D3 ?& X! T
  
  S4 M/ ~8 E& i( d2 s  //为了便于控制image_button的外观,我们使用#prefix、#suffix为其添加了一个带有ID的div1 Q5 [+ _0 G3 Q# O! Z
    '#prefix' => '<div id="image-submit">',& W' T: }7 e2 E! O* c1 w# x
    '#suffix' => '</div>',/ p3 y: ]2 o% f  L! V
  );  return $form;
: m, u; o% G% I4 F}/**, s8 S' M7 |1 E- |; ?- H  l
* contactus_form表单的验证函数
7 m1 Y% @- @# V" f' s */! {) J" J% P, n' ^5 x
function contactus_form_validate($form, &$form_state){
. z% F* l3 r# m6 I( L: y6 D  //这里使用正则表达式,来验证邮箱的有效性,注意,这里的正则表达式,包围在"/...../"之间。& \8 n3 c8 b/ U+ i- L5 G- _
if(!preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $form_state['values']['mail'])){. l3 ]) b6 |1 C: N% s
  form_set_error('mail',t('您输入的电子邮件地址格式不正确'));3 c8 m6 d* {" r8 u
}
: J/ r% ^  g2 `8 ]" [}/**
+ }( K& R; L3 C! }$ y * contactus_form表单的提交函数
. j4 T' p2 Q& D1 ~$ J8 Z0 q */( k" P6 V; ?( E! X. |$ N  H
function contactus_form_submit($form, &$form_state){1 ?. Z4 Q; Y4 Y* s% _' g, c
  //把表单的值存放在会话中去,由于这里涉及到了两个不同的表单之间传值。7 k, `2 r$ t: ^- h7 ~
$_SESSION['contactus_form'] = $form_state['values'];, i. |1 s6 i3 e1 Q- h
//表单重定向到确认页面
; E8 t' Z& e4 S) A3 P $form_state['redirect'] = 'contactus/confirm';: }! l) M# z( ~
" [( ^2 |; P' K) X
' f) ~& z' r( @( n/ L+ o9 ^0 @7 p
, s" X1 c3 F% y8 w' T0 f
3.Drupal 7 中文教程 联系我们 两步表单 “确认”页面回调星期一, 2011-08-22 23:35 — g089h515r806 /**
3 B. f0 W1 a4 o! [; A* q" g * “确认”页面的回调函数
# x" \. a, ]7 L. S% I */
- B# G0 v- B+ T1 {* s* a, ?function contactus_confirm_page(){5 ]# j# [8 \+ D% v/ m* x
  //我们为这个页面设置标题
$ V8 }! L4 {+ K6 W* E9 _, y drupal_set_title('联系我们');
2 _' z, t, |3 F2 C & a5 V" _- \: Q
//这里首先作了判断,如果会话中没有设置contactus_form,返回contactus
. H1 ]) |7 K# j2 V8 ?, t if(empty($_SESSION['contactus_form'])){% Z2 S2 F7 n# g" A# _$ n& [! \
  drupal_goto('contactus');+ k$ A1 v2 {# k1 M+ N
}else{
8 S2 i5 r& @- {/ l( f( N6 s } $render_array = array(
5 H8 {: _# ~- a   '#markup' => '',
3 U0 L5 x# w; a  w6 ? );
( r2 [  r' k3 q3 V! @ //该页面的正文为一个表单,注意对于表单,这里需要使用drupal_render呈现一下。* U1 y- s# z; G" ]4 n+ f
$render_array['#markup'] .= drupal_render(drupal_get_form('contactus_confirm_form'));. T% i; w5 I/ D; s  N
//Drupal7的页面回调,返回的应该是一个数组; m* B6 \1 H( G8 V; H+ r3 r
return $render_array;4 z0 Y6 |& w& {5 n2 S! U8 a) y
}/**
- ?, q9 O* _: W7 ?& m * “确认”表单的构建函数
- m' F: B3 x% ]2 \8 Z' v1 ^ */
6 V9 {* ^5 ?* I0 W8 c" K0 c" Xfunction contactus_confirm_form(){
1 V3 S8 r- T* `3 X- M/ k/ i  //添加我们自己的CSS,用来控制表单的样式
' U( b$ a# s7 ]) t# j2 f drupal_add_css(drupal_get_path('module', 'contactus').'/contactus.css');, v, R2 y: x9 d  [( c
//drupal_set_message(print_r($_SESSION['contactus_form']));- [: E) `! m1 F, G. Z) _) C: s
//表单元素“姓名”
7 v, u" A7 e2 P0 `9 `6 Y $form['name'] = array(
, e5 y, `  V2 t  '#title' => t('姓名'),
4 ]4 ~! s2 O' }( y# L# E5 u6 I  //表单元素的类型,这里为item
* E0 C8 m. b4 J, @- _' X$ |2 D  '#type' => 'item',
: d! z. y6 a. k  //'#default_value' => $_SESSION['contactus_form']['name'],
- U/ i4 l( @" v. d9 Q# ~  //表单元素的#markup,在Drupal6下面,我用的是#value,在7下面就无法工作,改为了#default_value,还是不行,
- Q) |& T2 g2 i$ v/ R3 \" Y/ |+ c8 @  //最后改为#markup,才可以了
  }( |! Y  u9 O  '#markup' => isset($_SESSION['contactus_form']['name'])?$_SESSION['contactus_form']['name']:"",
6 P' R- t" }' R );
2 H, J8 W+ a5 q2 `* ?0 C& L+ x3 T
5 a" V. S" d0 K; O- d5 O  //表单元素“单位名称”% f4 D  d5 y& d5 X& ?' H
$form['company_name'] = array($ y- s! F+ f# {
  '#title' => t('单位名称'),
( u' ]9 {% @' y0 z. g6 e& z0 l  '#type' => 'item',. l6 b% P) _) \  H
  //这是我在调试的时候,使用#value、#default_value、#description分别测试时的代码,这里保留了。
" ?+ h# B: S% A9 g7 l  //'#value' => $_SESSION['contactus_form']['company_name'],; \+ k2 z" @2 z5 x
  //'#value' => '123456',; r5 Z6 w- r) f$ ?) Q
  '#markup' => isset($_SESSION['contactus_form']['company_name'])?$_SESSION['contactus_form']['company_name']:"",' b% c2 H  @) E: b; H
  //'#description' => '123456',8 D/ _, I* f. j; A1 v
);
8 Q9 S$ ]% V+ v. ]5 j0 E . K# c) K, L: ~6 \' D6 H" P* Z3 T% o; _- B
//表单元素“电子邮件”: @3 Y' h! Q& R+ r4 {: E: s
$form['mail'] = array(
" H6 j. R6 `& E6 O' D2 k' z  '#title' => t('电子邮件'),
3 Y/ D2 X1 N4 i  a  '#type' => 'item',
8 C" ]$ t5 Y) ?  '#markup' => isset($_SESSION['contactus_form']['mail'])?$_SESSION['contactus_form']['mail']:""," O1 o. B- d5 L: }  E8 c# T
);% D- a# o0 J) o/ h  l$ r- J8 l

8 E$ Y  H: n+ ]& U, T$ a //表单元素“电话号码”
  [1 R& ?; b7 M; o/ ` $form['phone'] = array(* D! ]% O( [" j% o9 N  ~5 l
  '#title' => t('电话号码'),: s/ }2 U& f- t* o( I3 m: m
  '#type' => 'item',
9 w6 H4 ^6 p: u! B$ P; c" q  '#markup' => isset($_SESSION['contactus_form']['phone'])?$_SESSION['contactus_form']['phone']:"",5 [( Z2 ~* `9 `/ H/ X! W3 A
);
+ |( d0 {4 `5 O! M ; {3 w4 [& m5 p2 w
  //表单元素“邮件正文”) ~/ U# K  g2 q" p! _
$form['contact'] = array(
( k; o$ o8 u; Z% d, }' p8 y5 \  '#title' => t('邮件正文'),
8 U, _% v8 f5 Y1 h9 Q, ~  '#type' => 'item',1 P% ~& g, \$ p  H! s6 d" d
  '#markup' => isset($_SESSION['contactus_form']['contact'])?$_SESSION['contactus_form']['contact']:"",4 v8 B/ A! [& y. \* z
);3 j3 I8 v- s5 M& M" p! n' }

7 E5 }- t, l: c, V0 q  L* P //表单元素“访问来源”, n4 {% t) v- a5 X7 u
$form['visit'] = array(
, y0 V2 `0 ^" F+ r( M; {  '#title' => t('访问来源'),% V/ w1 @  y' m
  '#type' => 'item',- y! ^! ~* y. B! x9 p
  '#markup' => isset($_SESSION['contactus_form']['visit'])?$_SESSION['contactus_form']['visit']:"",
# U. e8 `$ N2 X- k );+ p: ~* j: y, P8 c

4 F0 I0 F! _: m" n4 a6 h1 F //如果访问来源,我们选择了“其它”,此时使用other表单元素的值来替换$form['visit']['#markup']。/ }3 u* y+ H5 m& c0 Z8 s
if( isset($_SESSION['contactus_form']['visit']) && $_SESSION['contactus_form']['visit'] == 'other'){
, }) C. o$ H! m7 w( @* w  $form['visit']['#markup'] = isset($_SESSION['contactus_form']['other'])?$_SESSION['contactus_form']['other']:"";  `8 h( g( B( E- j# r
} . [. o% j) h& G3 e; X/ z8 ^0 y9 \9 g4 j
/*
4 v  x% j& I( D //表单元素“返回”按钮/ G# w$ p$ t+ E4 B2 e
  $form['back'] = array(
- V+ Q$ v4 q% b2 F4 C* b8 [+ B    '#type' => 'submit',% X8 z! @9 r: k+ G2 F4 x* q2 u& z) w
    '#value' => t('返回'),6 @$ L; l# m- C$ r; s% Q
    '#submit' => array('contactus_confirm_form_back'),/ S; N- F& _* h1 `
  );
2 x" J8 s7 K7 f* C! O //表单元素“提交”按钮# I  R: n2 F% j0 u0 ]2 _9 r  Q
  $form['submit'] = array(( D' A" l$ O: H! f) i) F$ t7 E
    '#type' => 'submit',
$ V9 K& @* o& L, M: o    '#value' => t('提交'),
7 l  f# j6 F/ |3 z$ E  );
; o, o$ Z/ T5 G( v$ U2 \9 S4 U0 d  */
5 L0 @/ c( V- C. A1 ~/ ~# [/ _
& _# @: X" y8 p' D0 @  z& R- r/ _  //表单元素“返回”图片按钮
4 E8 a. d5 }* T6 l* A% b  $form['image_back'] = array(1 f& k' ?! `7 i; L1 @
    '#type' => 'image_button',
. l3 T2 Z: ^9 G. |9 e    '#src' => drupal_get_path('module','contactus').'/images/button2-1.jpg',
3 n6 F" H1 M! r' t; m  //使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_back' Z; y. O4 P/ {& b% }- F. Y
    '#submit' => array('contactus_confirm_form_back'),- u1 _$ ], A. h' x2 Y
    '#executes_submit_callback' => TRUE,
' w* n2 }% V8 K0 |. E+ d  //为表单元素添加两个属性,onmouseout、onmouseover,为了在鼠标移到按钮上时,显示不同的图片效果8 }8 e9 J7 _: _/ l0 s; y' z  Z  @
    '#attributes' =>array(; U. q5 I0 Z& q0 ]
      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-1.jpg'",
1 y, m2 {7 a0 ~/ d, g, J6 q2 i      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-2.jpg'",
: W. o$ j9 j' P1 U. z$ {    ),6 E* Y3 P. m0 ~
  );
( G& J; b4 S, }1 D/ R; h
  q% o  P, g# e! s/ E! r( j  //表单元素“提交”图片按钮' n! M6 N- u, m6 S5 D6 c3 ~. Z2 f
  $form['image_submit'] = array(
. L0 k. u  v) D! ]6 _6 t5 S    '#type' => 'image_button',
# e! h4 H" K9 e. c! M4 z    '#src' => drupal_get_path('module','contactus').'/images/button3-1.jpg',1 a1 w7 i/ d. p
    '#executes_submit_callback' => TRUE,
; \6 U' q! O3 V: @4 @4 ?  //使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_submit4 ?8 s, I9 `, M( U" I" @' v
    '#submit' => array('contactus_confirm_form_submit'),
4 }/ w- q. }! f5 P: W6 C    '#attributes' =>array(/ L$ n; I& d5 B* B8 c* r
      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-1.jpg'",
4 H0 o' w% M% F3 y+ e* h" I* e      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-2.jpg'",
( i8 {; H- X( H" |7 Q# h0 c  e% Z    ),
% r. |8 b- l* h3 @  );0 Y+ ~: f: r. i) F% O* O/ `: |
  . v. S3 q3 D3 U' y
  return $form;) a" o% }; x6 K% I) a+ n0 d6 p% |
}/**$ C; q$ P  A: W) K! K5 z
* 返回按钮对应的提交函数
) Q% n$ t/ V& T' X. H */8 g: J' S( n# g4 m
function contactus_confirm_form_back($form, &$form_state){2 o" ^" j( @, H) v; P
  //简单的重定向到contactus页面
, U! o& _9 i3 D! D $form_state['redirect'] = 'contactus';
4 {1 \5 y; j. ~' e7 c+ R2 w( {}/**
, l, e; {8 q( v7 h6 C+ p% K& y! @ * 提交按钮对应的提交函数) I1 X9 f! \8 x
*/9 X5 \* C; ^( L" e4 g) }
function contactus_confirm_form_submit($form, &$form_state){: L) ^: O- X6 M7 @* l
$values = NULL;( S- r, [: [* X1 ?" s' b6 z
//从会话中获取用户最初提交的值,并将$_SESSION['contactus_form']置为空。' ~, o6 p3 p, G0 p  Q8 \
if(empty($_SESSION['contactus_form'])){* K/ @: l8 t* ]) C. b
  drupal_goto('contact');
: X5 i7 `! v8 `7 z7 ] }else{
. F+ l5 H: b- ?: k# R- b# T  $values = $_SESSION['contactus_form'];6 G  t" `4 m1 [9 q- Z0 S; i, V9 T
  unset($_SESSION['contactus_form']);$ m+ ?% R! Y. x: g# `1 \( |
}
- l/ _) m6 C  n( H) s7 L
' t! ?8 r0 N, \5 N5 g) e& y2 Y# U) @ //收件人地址,这里为作者的邮箱
& ?. z. R- I+ ?% E9 z2 @4 p4 U7 \ $to = 'g089h515r806@gmail.com';
! q0 O  q3 F; U //用户填写的邮箱地址
5 Y6 b+ B( q5 I2 r# W  ` $from = $values['mail'];
5 ?( B) G9 F, [  G$ c: F " J* C. g+ s9 b3 F( |, u6 Q
//发送邮件
8 _% Q7 ?" q/ q& i7 r/ o% P% y0 I drupal_mail('contactus', 'contact', $to, language_default(), $values, $from);7 o5 t- I$ u2 ^! x4 f" x2 L; L
! u6 r  J- ^$ \2 a% l, c4 S
//简单的重定向到致谢页面4 S, F1 [5 z% m( Y
$form_state['redirect'] = 'contactus/thanks';
4 k3 y" N/ g( D9 \- Z/ a/ z7 h2 w! H}/**
2 _' ~9 e- s; c4 ~ * “致谢”页面的回调函数
( L! o& ]7 P, Z& } */0 ^2 Y' p7 c; Y" M
function contactus_thanks_page(){
, |1 o+ X8 c6 j9 |$ D  //我们为这个页面设置标题
5 ?  A. @  T% ]  [; O6 B2 U/ c. q" ]6 K drupal_set_title('联系我们');
3 I/ B5 ~9 p3 B. S$ o, w9 z $render_array = array(( h" @, b  k5 w
   '#markup' => '',
' ]. @* f/ t) Z! H8 @ );2 a/ C9 N# J: D) L
//Drupal7的页面回调,返回的应该是一个数组
3 Z% L" n- E; z% o9 [/ I! r# {) v& Z $render_array['#markup'] .= '<div id="contactus-thanks">';
9 t  _: q: L/ a  P/ N( J $render_array['#markup'] .= t('感谢您的来信,我们会在第一时间给您回复。');+ |9 J# e/ V0 V8 H  w% X3 Z
$render_array['#markup'] .= '</div>';% {" r  i$ b5 U1 a' j* P

# ]( G6 Y8 m- s0 ~) y5 t) K return $render_array;
6 R7 h0 n0 y6 C! [8 L& }( ?}
! B# I: V' N7 P8 j, y+ Y/ r
" {. v( t1 o3 }% s0 t( s7 C3 A3 w) ]6 q

3 n+ p; M2 a4 T8 W* d( {7 p$ \' t3 e+ d% t" S9 f0 k- F7 s. R% K. w

7 j% r0 z7 x$ y) G# I' u* R
  E8 x  B3 o, W6 |/ ?& V
/ m1 @# w& O- o  X: P+ c
2 n- P" h& F' q3 Z* N
3 M) N9 Z: }  g& Z/ W
7 w- e0 v1 f1 G6 h; x5 ^
  g2 n6 F4 w* B2 F8 _) `
# F8 R. w! |, \9 m. s" D( h

|2011-2026-版权声明|平台(网站)公约|手机版|手机版|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 12-27-2025 21:15 , Processed in 0.241805 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表