2014-02-21 44 views
0

(對不起我的英文不好寫X))的Drupal 7:動態muldimensional陣列形成,如何使用動態處理器(帶dynamicals提交)

嗨! 我有一個多維數組這樣的:

A 
    A1 
    A2 
B 
    B1 
C 
    C1 
    C2 
    C3 
... 

欲顯示該陣列分成形式(I做到了=))。對於每個元素(A,A1,A2,B ...)我想添加一個AJAX刪除按鈕,像這樣:

A x 
    A1 x 
    A2 x 

因此,對於每一個元素,我添加了一個提交表單,像這樣的AJAX參數:

foreach (...){ 
    ... 
    $form[$tree][$subtree][$id]['remove'] = array(
     '#type' => 'submit', 
     '#submit' => array('_delete_element_submit'), 
     '#ajax' => array(
      'callback' => '_delete_element_ajaxcallback', 
      'wrapper' => 'my-html-id', 
     ), 
    ); 
    ... 
} 

我想我可以使用一個參數,當我使用每個處理程序的處理程序。但谷歌搜索後,它似乎不可能將參數傳遞給處理程序:/ 不可能創建動態處理程序? :/爲動態表單的每個元素實現刪除ajax按鈕的正確/最佳方式是什麼?

謝謝=)我希望我明白!

回答

1

希望下面的代碼將是有益的:

$form['names_fieldset']['remove_useful_name'][$key] = array(
      '#type' => 'submit', 
      '#value' => t('delete'), 
      '#submit' => array('remove_one_method'), 
      '#ajax' => array(
       'callback' => 'add_more_method', 
       'wrapper' => 'names-fieldset-wrapper', 
       // add trigger 
       'trigger_as' => array(
        'name' => 'submit_name'.$key, 
       ), // 
      ), 
     ); 

function remove_one_method($form, &$form_state) { 
    dd($_POST['_triggering_element_name']); 
    $submit_name= $_POST['_triggering_element_name']; 
    $key= str_replace ('submit_name','',$submit_name); 
    // You can get the $key here. 
    // Base this $key remove the component from the form. 
    ...... 
    $form_state['rebuild'] = TRUE; 
} 
+0

真的謝謝你=)我沒看到「trigger_as」的說法! – user2137454