使用 drupal_get_form() 传递参数 [英] Passing arguments using drupal_get_form()

查看:26
本文介绍了使用 drupal_get_form() 传递参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我使用钩子的自定义模块,

假设如果我想将参数传递给 custom1_default_form 函数调用,我应该如何传递参数?

 '文本框','#title' =>t('请输入您的姓名'),'#default_value' =>variable_get('webservice_user_url',''),'#maxlength' =>'40','#size' =>'20',//'#description' =>t('<br/>用于呈现文件浏览器用户界面的根目录.'));$form['submit'] = 数组('#type' =>'提交','#value' =>t('保存详细信息'),);返回 $form;}函数 custom1_default_form_validate (&$form, &$form_state) {if(($form_state['values']['txt_name']) == '') {form_set_error('user_webservice', t('输入名称'));}}函数 custom1_default_form_submit ($form_id, $form_values) {//drupal_set_message(print_r($_POST));//$message = '您已经提交了 ' .$form_id .' 包含以下数据的表单:

'.print_r($form_state['values'],true) .'</pre>';//drupal_set_message(t($message));//drupal_set_message(t($form_values['values']['txt_name']));//print_r($form_values['values']);$GET_TXT_FIELD_VALUE = $form_values['values']['txt_name'];$INSERT_QUERY = "插入样本 (test_name) VALUES ('$GET_TXT_FIELD_VALUE')";if (db_result(db_query("SELECT COUNT(*) FROM {sample} WHERE test_name = '%s';", $GET_TXT_FIELD_VALUE))) {//用户不存在drupal_set_message(t('ALREADY EXIST.....'));}别的{db_query($INSERT_QUERY)or die('执行失败');if(db_affected_rows()==1){drupal_set_message(t('VALUE INSERTED SUCCESSFULLY'));}别的{drupal_set_message(t('VALUE INSERTED FAILED'));}}}

解决方案

如果您想通过 URL 传递参数,请使用 arg():

function custom1_default_form() {//假设 URL 是 http://example.com/admin/content/types:$arg1 = arg(1);//$arg1 = '内容'$arg2 = arg(2);//$arg2 = '类型'//...}

如果您只想通过 drupal_get_form() 调用将参数传递给表单,只需将参数作为附加参数添加到 drupal_get_form():

$block['content'] = drupal_get_form('custom1_default_form', $arg1, $arg2);//...函数 custom1_default_form($form_state, $arg1, $arg2) {//...}

Here is my custom module using hook,

Assume if I want to pass argument to custom1_default_form function call, how should i pass the argument?

<?php

function custom1_block($op,$delta=0){
    if($op=='list'){
        $block = array();
        $block[0]['info']=t('hello world');
        return $block;
    }else if($op=='view'){
        $block_content = '<p>THIS IS MY FIRST BLOCK</p>';
        $block['subject'] = 'HELLO WORLD';
        $block['content'] =drupal_get_form('custom1_default_form');
        return $block;      
    }  
}

function custom1_default_form () {
  $form = array();
    $form['nusoap_urls']['txt_name']  =
    array('#type' => 'textfield',
          '#title' => t('Please enter your name'),
          '#default_value' => variable_get('webservice_user_url',''),
          '#maxlength' => '40',
          '#size' => '20',
         // '#description' => t('<br />Root directory used to present the filebrowser user interface.')

          );
     $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Save Details'),
      );          
        return $form;    
  }

  function custom1_default_form_validate (&$form, &$form_state) {

    if(($form_state['values']['txt_name']) == '') {
        form_set_error('user_webservice', t('Enter a name'));
    }
  }

  function custom1_default_form_submit ($form_id, $form_values) {
 // drupal_set_message( print_r($_POST));

 //  $message = 'You have submitted the ' . $form_id . ' form which contains the following data:<pre>' . print_r($form_state['values'],true) . '</pre>';

  //drupal_set_message(t($message));
  //drupal_set_message(t($form_values['values']['txt_name']));
 // print_r($form_values['values']);
    $GET_TXT_FIELD_VALUE = $form_values['values']['txt_name'];
    $INSERT_QUERY = "INSERT INTO sample (test_name) VALUES ('$GET_TXT_FIELD_VALUE')";
    if (db_result(db_query("SELECT COUNT(*) FROM {sample} WHERE test_name = '%s';", $GET_TXT_FIELD_VALUE))) {
        // User doesn't exist
        drupal_set_message(t('ALREADY EXIST.....'));
     }else{
        db_query($INSERT_QUERY)or die('Execution Failed');
        if(db_affected_rows()==1){
            drupal_set_message(t('VALUE INSERTED SUCCESSFULLY'));
        }else{
            drupal_set_message(t('VALUE INSERTED FAILED'));
        }
    }    
}

解决方案

If you want to pass an argument via the URL, use arg():

function custom1_default_form() {
  // Assuming the URL is http://example.com/admin/content/types:
  $arg1 = arg(1); // $arg1 = 'content'
  $arg2 = arg(2); // $arg2 = 'types'
  // ...
}

If you just want to pass an argument to the form via the drupal_get_form() call, just add the arguments as additional parameters to drupal_get_form():

$block['content'] = drupal_get_form('custom1_default_form', $arg1, $arg2);

// ...

function custom1_default_form($form_state, $arg1, $arg2) {
  // ...
}

这篇关于使用 drupal_get_form() 传递参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆