2010-10-08 25 views
7

Hier ist meine benutzerdefinierte Modul mit Haken,Übergabe von Argumenten unter Verwendung von drupal_get_form()

Angenommen, wenn ich Argument übergeben will Funktionsaufruf custom1_default_form, wie soll ich das Argument übergeben?

<?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')); 
     } 
    }  
} 

Antwort

11

Wenn Sie ein Argument über die URL übergeben möchten, verwenden Sie 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' 
    // ... 
} 

Wenn Sie nur über den drupal_get_form() Aufruf ein Argument zum Formular übergeben wollen, fügen Sie einfach die Argumente als zusätzliche Parameter drupal_get_form():

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

// ... 

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

ich gefunden habe, in Drupal 6.20 dass Sie ein Dummy-Argument an die Callback-Funktion Definition hinzufügen sollte:

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

// ...

Funktion custom1_default_form ($ dummy, $ arg1, arg2 $) {// Blick auf, was in gespeichert wird Dummy $ // ... }

1

vermeiden die Verwendung von arg() - Funktionen wenn möglich:

Vermeiden Sie die Verwendung dieser Funktion, wo dies möglich ist, da der resultierende Code schwer zu lesen ist. Versuchen Sie in Menü Callback-Funktionen, benannte Argumente zu verwenden. Siehe die Erklärung in menu.inc für die Erstellung von Callbacks, die Argumente übernehmen. Wenn versucht wird, diese Funktion zu verwenden, um ein Element aus dem aktuellen Pfad zu laden, z.B. Laden Sie den Knoten auf einer Knotenseite, verwenden Sie stattdessen menu_get_object().

Verwandte Themen