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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 10-13-2011 02:27 | 显示全部楼层 |阅读模式
1.Drupal 7 中文教程 联系我们 两步表单 module 文件 代码部分5 R: G& [2 M+ h/ @; U! g
<?php
* z4 D! Q6 `$ {/**# r  a) W) f1 T; j& J3 s7 r* O, G
* @file
9 H5 @/ s2 f: P * 方便用户联系我们.
" O2 T, p; r8 X8 d */
/ y4 ~' e: ]0 K( O8 M, D5 J' y6 H/**+ ~. M& C9 S; F7 X, x: v( ]
* 实现钩子hook_menu().
1 u2 `2 ?; v( F6 i. v3 o */
- X9 \# S# B0 B5 D7 ?# k5 Hfunction contactus_menu() {# C1 N4 F" R& _* Q4 U/ t" I. U& I  N
  $items = array();# I9 R4 f8 ]# m
//联系我们菜单项3 D7 X# Y- W; c
  $items['contactus'] = array(
9 r1 d; y% E8 D# ]2 X# I5 S    'tilte' => '联系我们',
- p! ?2 T" o3 T: K! v$ M      'page callback' => 'contactus_page',
7 U* X0 Y2 ^: A% |' z4 [2 x8 M- b      'type'     => MENU_CALLBACK,4 M- M! Y, R/ P4 N1 K' U; l: U' X4 v; {
      'access callback' =>TRUE,
$ g6 b) G4 l+ F  Y% F& b: S   'file' => 'contactus.pages.inc',/ ^0 t6 J% n0 ~+ }5 i% @' ^1 J. @
  );% x4 {7 y# ~( Q6 ~# M- i0 j! d# S
//确认页面菜单项' z8 q. t8 Y) q  B- n1 @7 R
  $items['contactus/confirm'] = array(
( b; ]# `! I! ?# f      'page callback' => 'contactus_confirm_page',! k, N! {7 W: K$ g6 W/ L' w+ @, U
      'type'     => MENU_CALLBACK,
; D7 O$ Q6 Y: p, L1 _      'access callback' =>TRUE,5 ]; a; I$ H' F( a7 G; J$ r
   'file' => 'contactus.pages.inc',
+ x* v+ O5 l0 C) ?- ^" x( J  );2 }  P* E4 u) J0 {# ?
//致谢页面菜单项
* G3 c. I% ~+ t1 P4 t! N  $items['contactus/thanks'] = array(. v: V7 m* ]) T7 D
      'page callback' => 'contactus_thanks_page',
; M' _" i- D6 a; V1 ^" q      'type'     => MENU_CALLBACK,
( R2 |6 @# t& P4 s  x0 A      'access callback' =>TRUE,
# h. ~6 v3 B% v7 c' ~9 W/ o   'file' => 'contactus.pages.inc',
! W% X& C' V* q8 |, P& L  );& t8 ^; X' o$ B2 {. Y
  return $items;5 |0 \; Z" s3 e3 J6 [
}, w% k4 ~7 I2 E0 c, q' D+ ~  K5 d% |
/**
3 O3 M; h3 p, N/ q( s$ X * 实现钩子hook_mail().
8 \- f1 p" f+ O! x( V; c */- s. \' G! K1 a+ O( K4 }
function contactus_mail($key, &$message, $params){
* F- r5 ~1 }& V0 v  l; s0 X8 T $language = $message['language'];
4 W6 l( f3 T7 h$ j. V( q  switch ($key) {
3 D! V* r+ X& \% R   case 'contact':
3 p2 ^. X$ L' Z* c  / x7 L- B( _6 Y7 g8 p# p
    //邮件的标题. L8 x7 ?( r, K' s9 k+ y  Q, f
    $message['subject'] = '联系我们';
/ l" X; b& D6 p Drupal 7 中文教程 联系我们 两步表单 module 文件 代码部分 & m6 Z3 q' }8 b4 m: z: h
  + [2 `& a) O' @& M
   //邮件正文,这里面包含:姓名、单位名称、电子邮件、电话号码、邮件正文、访问来源# [2 o# J3 \9 d6 y; P" M( {
      $message['body'][] = '姓名:'.$params['name'];! M  U( k( F0 x& e; |, S
      $message['body'][] = '单位名称:'.$params['company_name'];; M: e  j( L  B
      $message['body'][] = '电子邮件:'.$params['mail'];
& X/ G  Y6 W( {) l* |7 G4 K      $message['body'][] = '电话号码:'.$params['phone'];0 ~( J" S; d: Z# L
      $message['body'][] = '邮件正文:'.$params['contact'];+ I6 Y  y8 t9 e+ v6 d4 B. O- ]" V
   ( O. \' M1 n( v! J! N
      //对于访问来源,如果visit的值我们选择了“其它”,那么此时我们取$params['other'],否则取$params['visit']7 Z( U5 a) Q: c. u7 [& F
      $visit = "";
5 F7 p  `: z/ s      if($params['visit'] == 'other'){
9 u$ L* j' w* V% n' l0 m4 Y9 D        $visit = $params['other'];
% s: j) d- j  `' t$ m/ `      }else{5 [/ r, `4 Z' V- e: K" _8 [
        $visit = $params['visit'];" i2 l% [2 E3 d4 q+ C' G
      }
! U1 T# I9 Q( @, P0 a2 d" [      $message['body'][] = '访问来源:'. $visit;
# L3 Z6 R% @& p- w  }
' L0 h9 F3 ^0 b) B3 Z0 U% F}
, }1 Q- P1 u( d2 t4 }+ F7 m( K* H( T. E( ]/ p# w4 L/ [- \/ \
0 a: O7 }' P: u! y# A) u2 ]
* }; Y2 a- C. ~  N3 M  `7 F
6 P, j5 F5 D" R7 |( y: ?
2.Drupal 7 中文教程 联系我们 两步表单 “联系我们”页面回调/ J. f* Y, ], _/ X* d4 o
<?php/**
7 h- y( H5 y5 s" D$ { * @file" v: l2 q! j6 d- }8 @; U, [
* 各种页面的回调函数.
4 A* c3 _/ V' n& G# ~& [: t */& i7 Y4 Y% K2 z( q' r- H& y) V9 O
; R3 f! P: w: T  z3 l0 \
/**3 z& x7 @5 O% K6 B5 s* {
* “联系我们”页面的回调函数2 o% ~* R" s: @# b. b
*/4 _0 B& I4 s9 n; V
function contactus_page(){6 n9 R" A4 z- F8 L9 z
  //我们为这个页面设置标题
$ _: w# b* B4 R! {  M0 g drupal_set_title('联系我们');
9 F4 q/ E, C4 e" R; C4 ?* W
" S# G6 h) J4 d; I2 d $render_array = array(
( ^, l8 _! i; ?" E( x, G   '#markup' => '', 8 D( ^6 ?. L; r/ J4 `4 t6 H
);' j" \* t  Q8 }; }. l. J

0 s/ D0 z& t, ]' K //该页面的正文为一个表单,注意对于表单,这里需要使用drupal_render呈现一下。
3 ~! u# Y" {. K. U. i $render_array['#markup'] .= drupal_render(drupal_get_form('contactus_form'));
8 v" m( V" a9 R* n! y  W
$ B  q. u! k/ r //Drupal7的页面回调,返回的应该是一个数组: _" O, {2 x, p6 e: m) U7 T$ B
return $render_array;6 H: z1 {; P# C; U  y' p
}/**7 I! Q' h9 M$ H+ t# @
* “联系我们”表单的构建函数; a) {# H; h" F# `5 I. J2 [
*/
' a/ c: q1 b4 W0 {function contactus_form(){
6 b; P/ {' u! r) n; P! A) F6 Y/ r  //添加我们自己的CSS,用来控制表单的样式$ l; r" P+ p; {! Q
drupal_add_css(drupal_get_path('module', 'contactus').'/contactus.css');0 H- z' l9 u$ h) l6 _8 m% o

8 ~: R6 ?% d+ M- }' D  //提示信息,默认为markup类型。
7 t9 j! Q9 W- }3 {- @! c, c& h$ ^) o $form['tips'] = array(: A" S. d2 l1 g) W5 O( p
  '#prefix' =>'<div id="tips">',$ @% _- T% H0 B2 e, o  N5 C4 o
  '#markup' => t('<span class="form-required">*</span> 号为必填项。'),. Q6 ~0 h9 K+ E9 {
  '#suffix' =>'</div>',9 a2 c  X5 ^  V* X( `( v, T* f
);
* `* a% B; g6 u% X0 J
, y) z. n6 J- B3 m //表单元素“姓名”9 O1 q& d8 g2 \3 Y
$form['name'] = array(6 O6 p% x7 J5 L- C: \
   //表单元素的#title属性,对应于实际输出中的label4 O, ^8 v. Q8 N2 K6 H
  '#title' => t('姓名'),
. h5 i* z& J6 D9 [% W3 @  //表单元素的类型,这里为textfield
. w! k# b. ]$ C2 N- D7 v. ]  '#type' => 'textfield',- A2 n3 ~8 q/ I3 E% N
  //这个表单元素是必填的
  p' x0 n, H  h/ n( s$ @  '#required' => TRUE,
9 l8 V9 N- e5 E4 G  //表单元素的默认值,这里使用了三位运算符和isset进行判定
$ r  ~. R% E6 j7 g1 G2 `  '#default_value' =>isset($_SESSION['contactus_form']['name'])?$_SESSION['contactus_form']['name']:"",3 N/ @7 w  Y, p; ~1 A* b
  //表单元素的描述,
- b. [' n& G5 {, w% {  '#description' => t('例如:周星驰'),
& |) |' H: H) g. L$ K' b );$ e; q8 h" U" f

; q7 n2 g. W5 W  //表单元素“单位名称”6 L6 \6 Q! e8 Q  i) C( W- G1 B
$form['company_name'] = array(
+ |  e1 d& f2 s- ~' @  '#title' => t('单位名称'),3 C( m; B3 z& d3 S: H
  '#type' => 'textfield',& }( m3 O) G4 V
  '#required' => TRUE,, m4 z/ ~  N$ r1 C+ [7 N( i
  '#default_value' =>isset($_SESSION['contactus_form']['company_name'])?$_SESSION['contactus_form']['company_name']:"",
2 L  {! n, V: z+ Q2 w* [7 s  '#description' => t('例如:北京无名信息技术公司'),  U0 `( {: c8 [8 r( ^
);) V; G# Z1 I2 `' ^! S0 y
5 m. `; Z# D7 ^+ P5 I, R. h
  //表单元素“电子邮件”! }' G. P/ t6 n) F7 o9 H0 k
$form['mail'] = array(
+ I: b) {3 m* |1 |( s$ ?  '#title' => t('电子邮件'),
! U7 V5 c. D& E" i4 f  _9 S9 v  '#type' => 'textfield',- G$ V, T! N" K0 Q" y0 [2 l. Y
  '#required' => TRUE,
* {; q! V4 Z* l: Y& [: ~  '#default_value' =>isset($_SESSION['contactus_form']['mail'])?$_SESSION['contactus_form']['mail']:"",0 R. C5 f3 W# }( x
  '#description' => t('例如:info@example.com'),5 ?8 f! g5 N  k0 `9 @
);
8 k, L5 b9 b7 y: I% ]- F - ~: l4 G  g, s) x
//表单元素“电话号码”1 R0 g5 N, O! a; t: t
$form['phone'] = array(9 E$ X' B7 B. j6 V2 g: R
  '#title' => t('电话号码'),
5 |& m# B. n& E+ o1 T2 R: C+ x( ~  '#type' => 'textfield',1 _, m& ~; C! z9 @2 Q5 a
  '#required' => TRUE,
% n, B* b2 U6 \9 F5 K7 [  '#default_value' =>isset($_SESSION['contactus_form']['phone'])?$_SESSION['contactus_form']['phone']:"",8 G  z2 _" ]2 B2 p) c
  '#description' => t('例如:010-88888888'),
$ |9 J& R5 [5 o& K5 ^8 C- ^; @ );" r$ B& w- T  i3 K5 ?, p- i. N
3 ~- s3 r7 ]" I. r# f6 x
  //表单元素“邮件正文”+ H" M; g8 [' W6 E* G. @
$form['contact'] = array(& Q0 |. f; R8 o2 b+ W) J
  '#title' => t('邮件正文'),/ `# f& d3 W3 a( e/ H( }
  //表单元素的类型,这里为textarea
3 Z* L. u: P8 a7 |# p0 o. i  '#type' => 'textarea',
8 [: a8 g* j. P) c5 I& u9 ~  '#required' => TRUE,9 J1 i  q* X1 A5 }* x; n# F
  '#default_value' =>isset($_SESSION['contactus_form']['contact'])?$_SESSION['contactus_form']['contact']:"",
6 ]0 h. y, U/ }( U- ]3 K );
  f  N% r' N5 r2 |$ X! [0 q+ E, k
; s3 T9 E6 {+ A5 r //访问来源的可选项7 P2 |6 u& n* j& Q7 k4 {& T8 ^
$visit_options = array(7 e4 G4 ^# w. z( N
  'baidu' =>t('百度'),$ C: A& F7 w; ?
  'google' =>t('谷歌'),
' r1 k# n6 b6 @( B, m# m  'sohu' =>t('搜狐'),, |8 T$ x; [4 ]% E9 p
  'other' =>t('其它'),
+ o# T& P8 X# E! t# X/ } );8 u/ A- M& A* z: e" ^
//表单元素“访问来源”# H+ b" w6 z  z8 _7 y
$form['visit'] = array(
& o. E7 s5 b$ V6 t6 _/ k  '#title' => t('访问来源'),
! ?5 [+ K. m8 l2 r- i  //表单元素的类型,这里为radios
0 R8 c% E" C  E  '#type' => 'radios',3 f5 I# \9 L  N7 u. s8 D
  //单选按钮的可选项。; V% U  l. d$ Y. F8 N: w0 }' R
  '#options' => $visit_options,
- g( G0 p3 h$ g3 q% |) p/ C  '#default_value' =>isset($_SESSION['contactus_form']['visit'])?$_SESSION['contactus_form']['visit']:"",
* T- v& h) Q) J, k6 Z) V5 v  //为了便于控制radios的外观,我们使用#prefix、#suffix为其添加了一个带有ID的div
7 r& P( L: @4 L; C, \0 Z5 _+ M4 _. u  '#prefix' => '<div id="visit-radios">',' r! q7 d3 {! f8 W! o9 X
  '#suffix' => '</div>',: u) h9 c3 M* S& @) e0 h
);/ F# h. O' q  ^! V+ q

  j& z  Z: @! X" {9 S //表单元素“其它”,它依赖于表单元素“访问来源”# N; j4 P8 U! z
$form['other'] = array(# d0 V$ R8 |2 m4 F5 X
  '#title' => t('其它'),
& t* A/ R, A$ N6 R6 [+ |  '#type' => 'textfield',( K7 k) m  s, u& V3 C$ M
  '#default_value' =>isset($_SESSION['contactus_form']['other'])?$_SESSION['contactus_form']['other']:"",$ Z2 R, j2 X5 o3 Z. d* i: Z" G
  //这里的意思是,当表单元素“访问来源”的值为“other”时,这个表单元素才显示出来
2 w: |( \) ^& X   '#states' => array(6 J9 A2 G1 a" _+ Y( \7 V
    'visible' => array(
1 |1 U2 `7 M& _& M, C     ':input[name="visit"]' => array('value' => 'other'),3 j" m$ {/ e% U; V* F( y+ s
   ),( ?, s$ }' O8 \3 e
  ),1 t6 p# y: P% f5 n/ o
); 4 H' J( U( Y! R; b, X
/*
$ E4 |+ r7 @6 g" ]# h7 E6 ^ //表单元素“确认”提交按钮/ i$ a' C, Y. J" i( @/ ?
  $form['submit'] = array(
$ |2 J0 d; J, d2 G7 Q    '#type' => 'submit',2 f4 Q) z0 o7 f3 q, d0 {) ~& I
    '#value' => t('确认'),
' Q  O6 r8 B  l! Z  );! o% y" e+ X( g) H0 g/ p# k' {* W
  */
6 ]. m2 w5 C8 o; ^7 g/ D + J. C6 X7 b4 |3 I, c& R
  //表单元素“确认”提交按钮,这里采用了图片的形式
9 }- N: L, ~# Q* g  y" N8 W  K1 b& o  $form['image_submit'] = array(% A/ z0 [, Y, J
   //表单元素的类型,这里为image_button$ d7 i" D- r8 U
    '#type' => 'image_button',
( Q# t) p- M9 W  5 o; ^, E7 k* K( a" G
  //图片按钮特有的#src属性,5 q5 i1 U# `( a% Z6 N, _
    '#src' => drupal_get_path('module','contactus').'/images/button1-1.jpg',
; y! ?0 y3 q1 R$ W, t    '#value' => 'image_sub',3 a" k* D" M; M
  ; x: V8 p/ Q" q  t9 a
  //为表单元素添加两个属性,onmouseout、onmouseover,为了在鼠标移到按钮上时,显示不同的图片效果( `2 r, H4 M+ a0 o5 }5 m- I
    '#attributes' =>array(1 I9 e6 k6 w8 k) x* p
      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button1-1.jpg'",
/ Q3 H2 b' P# h0 ]/ {4 S      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button1-2.jpg'",
/ M( e: ~. A. i: {( V, u  U    ),' b$ e) f: d1 P: X: B
  
: J& j% j  J- {: A, V2 b  //为了便于控制image_button的外观,我们使用#prefix、#suffix为其添加了一个带有ID的div' A" d: Z+ h4 J5 N7 c1 B* k
    '#prefix' => '<div id="image-submit">',2 S3 B+ x" f$ k( P$ e
    '#suffix' => '</div>',7 E5 w! m, E  h2 k, A% X* `
  );  return $form;
9 ~$ d& e2 e' y8 J9 @" X- `# o9 j+ N}/**6 s3 i# D- R0 w( o) s; ~+ e
* contactus_form表单的验证函数
* J  K# }4 n  [7 X7 S */6 l& b  H' L5 ?. f9 L8 N
function contactus_form_validate($form, &$form_state){
0 f; Z4 s) y, F! d$ i  //这里使用正则表达式,来验证邮箱的有效性,注意,这里的正则表达式,包围在"/...../"之间。, P- c( {- c7 r' W5 _3 p+ d
if(!preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $form_state['values']['mail'])){
2 N3 [, p4 {7 a7 j0 b+ e! f4 u% U  form_set_error('mail',t('您输入的电子邮件地址格式不正确'));3 ?# T8 [+ s" A* d5 W
}
/ _3 o/ O3 k0 y) ?% L- Y# q! l}/**, `1 _/ O( L* _2 k0 m
* contactus_form表单的提交函数  J% D. K1 }& y( b. |/ `4 x
*/
0 k; r6 P/ g3 c1 w4 Kfunction contactus_form_submit($form, &$form_state){! j1 m& M" G" R( X, @3 G
  //把表单的值存放在会话中去,由于这里涉及到了两个不同的表单之间传值。
3 S6 ]$ z- Z9 N/ I3 ]9 P: x2 G $_SESSION['contactus_form'] = $form_state['values'];
9 t: ~5 \4 ]. @# u0 }& l //表单重定向到确认页面
' G+ y% ^$ B% o/ i6 Z0 x $form_state['redirect'] = 'contactus/confirm';
% z; g9 M, P  ~' I3 W: O2 N) J% a1 G7 P
- `8 L# ?% x4 `, W( ~
( {- z9 B" z3 r" ^3 y
3.Drupal 7 中文教程 联系我们 两步表单 “确认”页面回调星期一, 2011-08-22 23:35 — g089h515r806 /**- u4 r) x. o! l4 u1 B" \1 l
* “确认”页面的回调函数
. ^# t3 S3 C7 D9 { */" p; u9 F- Y0 h2 H& C# X
function contactus_confirm_page(){( r/ t$ `. b  l* P% E1 I4 K
  //我们为这个页面设置标题
3 C# T, H% l" w2 F drupal_set_title('联系我们');. l7 ?3 U- K5 T  V
. ^  F. F# Y/ B$ ^4 u( l& u" X( c
//这里首先作了判断,如果会话中没有设置contactus_form,返回contactus( f: F3 a: ~% `" J
if(empty($_SESSION['contactus_form'])){
/ r- x! f6 G0 [7 n: B  drupal_goto('contactus');
$ E$ j( S4 {* {5 r# O! T }else{( E5 o+ A0 ^% U8 ^5 m& V
} $render_array = array(
* \: G3 |( Z" a" m3 o: K6 @; R9 Q   '#markup' => '',
9 i2 T0 y9 t5 M7 D7 `8 X$ k, O- n );0 i% e, ?, s, q# B
//该页面的正文为一个表单,注意对于表单,这里需要使用drupal_render呈现一下。
8 A/ Y- Y" ^4 i $render_array['#markup'] .= drupal_render(drupal_get_form('contactus_confirm_form'));1 F9 r- v; X8 e) \( f8 M  [
//Drupal7的页面回调,返回的应该是一个数组
; w  B; w2 ?/ {- x( x+ b  } return $render_array;
$ k- v; W, x- t/ j% w}/**
' c9 X0 l1 V* [# k * “确认”表单的构建函数9 K. ~( j' T0 A& b, k  w
*/: d+ i: Q1 @  Q; x" D6 j# V
function contactus_confirm_form(){
* a* G1 K( w+ i2 ]  //添加我们自己的CSS,用来控制表单的样式, \. Y2 w. S* ^- Y# u; e5 {
drupal_add_css(drupal_get_path('module', 'contactus').'/contactus.css');
7 ]2 y4 y8 W/ J: v0 @) Y0 D8 V9 F //drupal_set_message(print_r($_SESSION['contactus_form']));6 p6 e5 y( r+ a) _* G* s7 w, }
//表单元素“姓名”5 V  M/ j) _- \$ X& D. E! [
$form['name'] = array(
. T( Y; A. q' O  '#title' => t('姓名'),# f+ W# R4 {: a' d# C  p% H
  //表单元素的类型,这里为item* E' E3 b( z5 S- {5 v2 R  D# ]4 i
  '#type' => 'item',+ E+ J$ A3 o1 k" a! U
  //'#default_value' => $_SESSION['contactus_form']['name'],6 o, J5 }0 U0 ]" [. G
  //表单元素的#markup,在Drupal6下面,我用的是#value,在7下面就无法工作,改为了#default_value,还是不行,; G$ J* A4 K* x2 j) I
  //最后改为#markup,才可以了+ j( p8 o7 Q9 z( k
  '#markup' => isset($_SESSION['contactus_form']['name'])?$_SESSION['contactus_form']['name']:"",
8 Q$ O' `- _' F( I );" A- O9 f9 _2 f0 O
! L" |3 ~: D( B& L9 y4 a" Y& C% K
  //表单元素“单位名称”# Q2 H% G+ i2 {  K* n- ]% c
$form['company_name'] = array(
8 E9 i* A0 ^# i9 a" G( M3 i5 V  '#title' => t('单位名称'),2 }4 x2 ^9 u" N  C) C: w: H7 e
  '#type' => 'item',
8 S3 ~$ c6 A5 s5 C* h  //这是我在调试的时候,使用#value、#default_value、#description分别测试时的代码,这里保留了。2 m- m- b6 U" @0 X+ ~6 d
  //'#value' => $_SESSION['contactus_form']['company_name'],
6 l7 J6 J' ^7 @, p( `% W  //'#value' => '123456',+ v9 S- L8 Z0 o& C+ e' E0 ^
  '#markup' => isset($_SESSION['contactus_form']['company_name'])?$_SESSION['contactus_form']['company_name']:"",5 K1 {. o3 S: P1 k
  //'#description' => '123456',% O% G4 Z" B) {
);' E9 z$ C! D% f

: I, G% j* ]% n" b( `+ O/ F7 S3 t5 | //表单元素“电子邮件”/ ]9 h& V' D  j" M% q, v
$form['mail'] = array($ r% n9 d1 ~9 H! V* `- Y$ M
  '#title' => t('电子邮件'),
* }  j2 ?4 ?& A, {* K0 ]4 _  '#type' => 'item',
6 T' P( a0 g* x% L8 r/ c1 [) E% J5 |  '#markup' => isset($_SESSION['contactus_form']['mail'])?$_SESSION['contactus_form']['mail']:"",1 M. X: `. x% e) V0 ~
);
$ f* Q8 t9 x8 P/ A1 ?
/ L! z6 r) l( G7 u* F; w //表单元素“电话号码”
: n  p# _. y4 w) H $form['phone'] = array(
  S% O( ]% k( @1 j. i9 R  '#title' => t('电话号码'),2 c- y% g" `1 G' {  e
  '#type' => 'item',
' E' l- P; M% H9 t  '#markup' => isset($_SESSION['contactus_form']['phone'])?$_SESSION['contactus_form']['phone']:"",9 _3 M6 ]! w( P* w  G
);2 z0 v( d; f% L7 o& K
! I. {7 [# `. t1 s' B
  //表单元素“邮件正文”9 c5 a/ p; |) [, C" q  B
$form['contact'] = array(
  J5 i' s% ?: Q$ r- Q: J2 J: J  '#title' => t('邮件正文'),( p& }% F5 C# L+ w& \( i
  '#type' => 'item',. k. }2 ]: Y# y7 {" w
  '#markup' => isset($_SESSION['contactus_form']['contact'])?$_SESSION['contactus_form']['contact']:"",
6 ?9 ~- n0 v3 x: _  c! d& X );
# v5 s4 T) C* N3 G " P& `$ Y; k) M
//表单元素“访问来源”
. b. s" L2 m6 ]2 [+ ~' d $form['visit'] = array(
; L, {. ~1 T" J. _0 `. I  '#title' => t('访问来源')," |) k7 @9 z0 A/ K
  '#type' => 'item',/ z  x" S% k4 ~( E- G
  '#markup' => isset($_SESSION['contactus_form']['visit'])?$_SESSION['contactus_form']['visit']:"",/ ]" B( r0 m7 B: d- P8 \# k  Z
);! k0 h/ [# ?1 b; w# E0 g
) a$ D( y; L: e, F- Z
//如果访问来源,我们选择了“其它”,此时使用other表单元素的值来替换$form['visit']['#markup']。
0 W( \) G2 ]4 ]) k; y  N$ s. I( } if( isset($_SESSION['contactus_form']['visit']) && $_SESSION['contactus_form']['visit'] == 'other'){* S9 k4 S4 w/ f7 j$ m$ j) p
  $form['visit']['#markup'] = isset($_SESSION['contactus_form']['other'])?$_SESSION['contactus_form']['other']:"";$ }) c, u/ B2 e$ c- g6 Z: u, u" h
} & n9 @2 ^; p% y: [1 V* r
/*
: F% @3 A# X* o) l6 W0 g //表单元素“返回”按钮4 D) W% I4 v. L6 j: v7 G
  $form['back'] = array(
) L2 _" I" M: A# T, _    '#type' => 'submit',+ F; \8 R" S2 j, n( b* S) U. h. f3 l
    '#value' => t('返回'),
4 T/ W! R2 S; s    '#submit' => array('contactus_confirm_form_back'),
  ~7 K% h7 Y6 W4 U( G  );/ X  w. U7 [( a& r+ @
//表单元素“提交”按钮( _0 \& g, F3 c  d+ e& f: e' H+ s
  $form['submit'] = array(
, k% x/ ]' K" E4 S9 H- ?    '#type' => 'submit',1 y4 E3 u$ a+ s$ C9 a
    '#value' => t('提交'),
  G7 \, U# N3 {  );; [4 H, H% V9 L' ^( _. ^/ ]
  */' z/ e3 @) h  k3 Y$ W
7 q) T4 {( ?$ Z" a7 A' U- L
  //表单元素“返回”图片按钮$ m* R4 @5 k7 r- S( m8 Y8 u
  $form['image_back'] = array(: |3 J( X; o& T/ h) b- a
    '#type' => 'image_button',
3 N. J& M) B  N  ^    '#src' => drupal_get_path('module','contactus').'/images/button2-1.jpg',
8 Z  n% `" b" w# o  //使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_back2 w. H3 Z& e' {. n
    '#submit' => array('contactus_confirm_form_back'),
5 Q1 T0 B$ \8 \    '#executes_submit_callback' => TRUE,  E- o9 [- j  G0 T
  //为表单元素添加两个属性,onmouseout、onmouseover,为了在鼠标移到按钮上时,显示不同的图片效果- n' d% A6 t3 T/ l3 p: R: x
    '#attributes' =>array(
, P5 J+ l$ P0 B# C( q1 x$ ~, e! r      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-1.jpg'",1 t  R; l4 W) u; h, O4 O8 Y9 e
      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button2-2.jpg'",
+ U5 \1 X! N, j( m  v' B    ),
" Y; d6 N( i7 a) n" R: L' a: N  );
2 {3 _$ Y8 Y0 {- W( ]. O" Q 8 I" V/ A  ~1 k* {2 ]. r3 ?# H8 q+ y
  //表单元素“提交”图片按钮
4 i$ h7 A; ?" p& k( A$ y  $form['image_submit'] = array(: t! w3 o& }% T8 j
    '#type' => 'image_button',6 [7 ]  }, z+ }. G7 R
    '#src' => drupal_get_path('module','contactus').'/images/button3-1.jpg',
( `- ~, j7 k" f) n/ Q& o! V# \    '#executes_submit_callback' => TRUE,6 u6 m1 ^( w1 h- |
  //使用这个按钮提交时,对应的提交处理函数为contactus_confirm_form_submit( Q7 h2 E8 \  \  F
    '#submit' => array('contactus_confirm_form_submit'),5 }6 Z, |, A' Z( b' u/ r8 z
    '#attributes' =>array(
/ i( \& `. S+ O) o. }! p      'onmouseout' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-1.jpg'",8 m- R2 z, L* b( u/ n- t
      'onmouseover' => "this.src='".base_path().drupal_get_path('module','contactus')."/images/button3-2.jpg'",
  |: @$ V6 u- J, J) R    ),
& O+ `% D# M! F* H3 `/ ~+ Z  );0 a; W7 p, ^* s- M1 K6 v
  
! ?0 ?4 l' ]# O0 x1 Y% E1 l  return $form;2 ?; y$ M) q! @5 ~3 ^5 D9 c  z
}/**! O, }/ \3 V* X5 h( c! j
* 返回按钮对应的提交函数' f- h( F: \- T$ Z8 P0 ~" I  e
*/
7 o* W0 G0 N$ |/ U5 c  L' z; X' t3 Dfunction contactus_confirm_form_back($form, &$form_state){9 V- v6 j  ]- j7 W
  //简单的重定向到contactus页面& b8 M8 S9 {$ E
$form_state['redirect'] = 'contactus';+ }5 w) d3 [8 M$ F/ A5 g3 x+ d
}/**9 e' y' `9 x1 D0 ^# I3 j. o! m  V
* 提交按钮对应的提交函数3 [- V) q! [# o- W4 q1 W: ^
*/
  \: `) r+ E5 W  J, Kfunction contactus_confirm_form_submit($form, &$form_state){
' U! k3 |" t0 I6 W% z $values = NULL;
+ p0 i5 N# S, o1 d; h/ a //从会话中获取用户最初提交的值,并将$_SESSION['contactus_form']置为空。
/ m2 ?, c2 q. K) E if(empty($_SESSION['contactus_form'])){
. s- c% m9 `9 `: R  drupal_goto('contact');; {) u/ E1 A, R" l8 G7 i5 d2 d
}else{
1 I7 P! @7 H% J6 q- w2 U  $values = $_SESSION['contactus_form'];
1 |+ f! W$ o. J! `8 d) p; `  unset($_SESSION['contactus_form']);+ o! F2 t" t, }* y( D1 s! `$ }2 Z
}
  \2 l+ O) M* \7 ~9 G
( G, s* k7 C5 [- s0 w //收件人地址,这里为作者的邮箱
9 k7 T' i1 ~6 D3 |3 \3 I  U/ U $to = 'g089h515r806@gmail.com';* }. w& {' ?. |+ i6 f
//用户填写的邮箱地址# o) j, O. R% l
$from = $values['mail'];
7 v& R) N" J' q7 m
# @  Y1 x4 \: y2 \5 O9 ` //发送邮件) t0 c( N: t. ~3 B! A" b
drupal_mail('contactus', 'contact', $to, language_default(), $values, $from);
' R4 Q& ]1 c/ ]+ k# k . p4 t! X6 `  `
//简单的重定向到致谢页面
( A1 l0 R8 N. ?" m $form_state['redirect'] = 'contactus/thanks';( Q6 ?, D" e% {" L" w/ B
}/**
3 U) o( @: W3 n% y( \% M! p * “致谢”页面的回调函数9 S9 A; N9 g  y7 `3 D% E3 s" b: k
*/
5 f) Z. u! C: L2 Y: x3 J2 rfunction contactus_thanks_page(){8 Y" Q& L; V4 e: I
  //我们为这个页面设置标题
4 B/ b6 Y; z% x1 O+ @! ^ drupal_set_title('联系我们');7 F/ q/ D& G5 _8 E" Q7 I! J% s9 m; z
$render_array = array(
- A2 v% c' k+ F* Q  }   '#markup' => '', ' N8 F: Z3 E: I5 k
);' `$ V+ F% D% x4 y5 J, Z! o: E9 d
//Drupal7的页面回调,返回的应该是一个数组+ a) B% z$ n  E% w3 J7 S
$render_array['#markup'] .= '<div id="contactus-thanks">';
* q9 [. J4 \& ? $render_array['#markup'] .= t('感谢您的来信,我们会在第一时间给您回复。');( G2 C3 S: @! g) f9 ?7 \2 R. F) R
$render_array['#markup'] .= '</div>';7 E& S( y2 a. y' C8 e, [
. q* |3 u/ F" l2 b$ {5 Y+ W  ^
return $render_array;
% R  \6 \+ `$ T8 X% ^9 s- Z2 D; d  B}
3 p4 e2 U) W1 {1 r( Q1 H$ |8 Q) Q  `: n8 v

, o" |% |0 y: @0 H) \' y% [5 H
- ?" i6 u& v' E+ R
5 y; k: }! r- ?# }* A0 ?# \7 c" ~4 z" `, z+ @8 D+ W  T% Z
4 B! Z- |; p3 X& ^2 R

' n, B9 J7 K0 x
; {  |& r+ e, A& p- N7 W" w
; W/ d4 p* k. o/ m: [. _, L7 t5 l4 ]4 w- N. a# B

: Y1 s& a% c; u& W- v9 e
$ c5 Y) a. Z6 h

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

GMT+8, 3-20-2025 03:05 , Processed in 0.351790 second(s), 183 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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