欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal6 drupal7 创建form表单 form_submit 跳转 form_state redirect $form_state['redirect'] 并重定向提交路径同时使用get方式传递(drupal 简洁url)传参实例演示 有大用 有大大用 有大大大用 有大大大大用

function huodong_send_message_form_submit($form, &$form_state)
{
   $field_is_baoming
=$form_state['values']['field_is_baoming'];
   $field_is_nianxian =$form_state['values']['field_is_nianxian'];
   $nid =$form_state['values']['nid'];

   $form_state['redirect'] = array('node/'.$nid,array('field_is_baoming'=>$field_is_baoming,'field_is_nianxian'=>$field_is_nianxian));
    //上面的代码应该是错的,应该是 $form_state['redirect'] = array('node/'.$nid,array('query'=>array('field_is_baoming'=>$field_is_baoming,'field_is_nianxian'=>$field_is_nianxian)));
     //后面的数组参数再加一个键  query 才正确(至少drupal7 是这样子的)
     
   //同时不能使用这种直接跟路径的方式,它会转义 $form_state['redirect'] = 'node/'.$nid.'?field_is_baoming='.$field_is_baoming.'&field_is_nianxian='.$field_is_nianxian ;

   return; //或者 return $form_state? 可以吗,应该也可以吧  


}

最后跳转的路径为 /node/463870?field_is_baoming=0&field_is_nianxian=1  







  1. 1、 指定创建form的函数,并传递参数  

  2.   

  3. $formhtml = drupal_render(drupal_get_form('create_form''get_name',a,b,c));  

  4.   //介绍一下drupal_get_form($fucname,$vars)   param1 调用创建form的函数名     param2 传递过去的参数,每个参数使用,分割    

  5.   

  6.   

  7. 2、创建create_form函数  

  8.  function create_form($form_state$args) {  

  9.   //这里的$args 就是你传递过来的参数,  

  10.   $callback_url = $args['build_info']['args'][0];     //get_name  

  11.   $default_value = $args['build_info']['args'][1];    //a         $args['build_info']['args'][2]    //b   以此类推  

  12.   $form['callback_url'] = array(     //创建一个隐藏域来保存form提交的路径  

  13.     '#type' => 'hidden',  

  14.     '#value' => $callback_url,  

  15.   );  

  16.   $form['username'] = array(         //创建一个异步查询  

  17.     '#title' =>name,  

  18.     '#type' => 'textfield',                        //字段类型  

  19.     '#default_value' => $default_value,            //设置默认值  

  20.     '#autocomplete_path' => 'ajax/'.arg(2),        //指定查询路径  

  21.     '#size' => 22,                                  

  22.   );  

  23.   $form['submit'] = array(                      //创建form提交按钮  

  24.     '#type' => 'submit',  

  25.     '#value' => ucfirst('search'),  

  26.     '#submit' => array('form_submit'),         //指定form提交函数  

  27.   );  

  28.   return $form;  

  29. }  

  30.   

  31.   

  32. 3、 创建form提交函数  

  33.   

  34.  function form_submit($form, &$form_state) {    

  35.   //1、drupal的简洁url传参    

  36.   

  37.   //拼接form提交路径  用隐藏域和username的值来拼接    

  38.   

  39.   $callback_url = $form_state['values']['callback_url'] . '/' . $form_state['values']['username'];  

  40.    

  41.   

  42.   //重定向form路径    

  43.   

  44.   $form_state['redirect'] = array($callback_url);  

  45.   

  46.   

  47. //2、get方式传参  

  48.   

  49.   $callback_url = $form_state['values']['callback_url'];  

  50.   

  51.   $args = array('query' => array('c'=>$form_state['values']['username']));  

  52.   

  53.   //重定向form路径    

  54.   

  55.   $form_state['redirect'] = array($callback_url,$args);  

  56. }  

来自 http://blog.csdn.net/wjc19911118/article/details/8131260

普通分类: