Drupal 7:一个动态多维数组形成,如何使用动态处理程序(动态提交)

时间:2014-02-21 03:28:20

标签: drupal drupal-7 drupal-forms

(对不起我的英文写作不好x))

你好! 我有一个像这样的多维数组:

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

我希望将这个数组显示为一个表单(我做了=))。对于每个元素(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',
        ),
    );
    ...
}

当我为每个处理程序使用处理程序时,我认为我可以使用参数。但谷歌搜索后,似乎无法将参数传递给处理程序:/ 创建动态处理程序是不可能的? :/为动态表单的每个元素实现delete ajax-button的正确/最佳方法是什么?

谢谢=)我希望我明白!

1 个答案:

答案 0 :(得分: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;
}