2014-01-23 49 views
0

我有一個問題。如何從$ form ['item']獲取值,以便我可以使用該值來過濾表單['item_2']中的數據。 例如: 對於選項,其中表如下所示:從select獲取值 - Drupal

item_id item_name 
1   pencile 
2   book 

所以,當我選擇了2本書,將過濾掉其他形式的數據在那裏我有表看起來像:

newitem_id item_id newitem_name 
    1    1   hard 
    2    1   soft 
    3    2   novel 

的示例代碼:

function my_module_form($form,&$form_submit){ 
    $form=array(); 

    $select=db_query("SELECT * FROM {table_1}"); 
    $options_one=array(); 
    foreach($select as $data){ 
    $options_one[$data ->item_id] = $data -> item_name; 
    } 


    $form['item'] = array(
    '#title'=>t('Items'), 
    '#type' => 'select', 
    '#options' => $options_one, 
    '#required' => TRUE, 
    ); 



    $temp=1; 
    $select = db_query("SELECT * FROM {table_2} WHERE newitem_id=:item_id",array(':item_id'=>$temp)); 
    $options_two=array(); 
    foreach($select as $data){ 
    $options_two[$data ->newitem_id] = $data -> newitem_name; 
    } 


    $form['item_2'] = array(
    '#title'=>t('Items'), 
    '#type' => 'select', 
    '#options' => $options_two, 
    '#required' => TRUE, 
    ); 

現在在$ temp的代碼中,我使用數字1,它給了我下拉下的硬性和軟性值。但是,我怎樣才能將$ form ['item']中的選定值添加到$ temp中。

+0

做ü要更改填充值基於'select_box_1'配對上的選擇在'select_box_2'上。?? – Outlooker

+0

當你在第一個盒子中選擇可以說鉛筆時,在第二個選擇框中它必須只顯示硬和軟。 – 2thecore

回答

2

您可以在您的案例中使用簡單的jQuery,也可以使用drupal FORM API #ajax property.An數組元素的值可以控制元素相對於Drupal AJAX framework的行爲。 AJAX(異步Javascript和XML)是一個術語,用於瀏覽器和服務器之間的動態通信,無需重新加載頁面。您可以在此屬性上找到更多詳細信息here。如果您覺得困難,可以嘗試drupal提供的開發者示例準確顯示了下拉菜單中的值是如何依賴於另一個下拉菜單的。

Drupal Developer examples

使用簡單的jQuery(如果你的價值觀只是靜態values.If你需要從db取值,應該使用jQuery+ajax

Jsfiddle

+0

非常感謝:)... – 2thecore