2010-10-08 16 views
7

Oto mój moduł custom użyciu hak,Uboczny argumenty wykorzystujące drupal_get_form()

Załóżmy, jeśli chcę przekazać argument custom1_default_form wywołanie funkcji, jak należy przekazać 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')); 
     } 
    }  
} 

Odpowiedz

11

Jeśli chcesz przekazać argument za pośrednictwem adresu URL, użyj 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' 
    // ... 
} 

Jeśli tylko chcesz przekazać argument do formularza poprzez wywołanie drupal_get_form(), wystarczy dodać argumenty jako dodatkowy parametry drupal_get_form():

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

// ... 

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

I odkryli, że w Drupal 6.20 należy dodać obojętne argument definicji funkcji oddzwaniania:

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

// ...

funkcja custom1_default_form ($ manekin, $ arg1, $ arg2) {// spojrzenie na to, co zostanie zapisane w $ manekin // ... }

1

uniknąć korzystanie z funkcji arg(), gdy jest to możliwe:

Unikaj korzystania z tej funkcji, o ile jest to możliwe, ponieważ kod wynikowy jest trudny do odczytania . W menu funkcji zwrotnych spróbuj użyć nazwanych argumentów. Zobacz wyjaśnienie w menu.inc, aby dowiedzieć się, jak konstruować wywołania zwrotne, które pobierają argumenty w postaci . Podczas próby użycia tej funkcji do załadowania elementu z bieżącej ścieżki, np. ładując węzeł na stronie węzła, użyj zamiast tego menu_get_object().

Powiązane problemy