如何在Drupal 8表单中获取触发按钮ID

时间:2018-06-29 10:02:38

标签: php drupal drupal-7 drupal-6 drupal-8

嗨,我想知道一种获取Drupal 8表单中单击的按钮的索引ID的方法。 我有一些领域的表格。它具有添加,删除,添加更多按钮。

我想在单击“删除”按钮时删除特定字段的值。 为此,我需要知道clicked button的索引。我能够在Drupal 6和Drupal 7中实现这一点,但是在Drupal 8中却无法实现。

Drupal 6:

function field_add($form, &$form_state) {

  $element_key = $form_state['clicked_button']['#parents'][1];
}

Drupal 7:

function field_add($form, &$form_state) {

  $element_key = $form_state['triggering_element']['#parents'][1];
}

如何在Drupal 8中获得相同的内容?

3 个答案:

答案 0 :(得分:2)

我能够找到它。 这是在Drupal 8中实现的一种方法。

public function field_add(array &$form, FormStateInterface $form_state) {
    $element_key = $form_state->getTriggeringElement()['#parents'][1];
}

答案 1 :(得分:1)

在Drupal 8中,我使用属性“ #name”为按钮命名,以便能够使用以下代码:

$clickedElement = $form_state->getTriggeringElement()['#name'];

通过这种方式,可以防止数组索引不同的可能问题。

答案 2 :(得分:0)

在Drupal 8中,这对我而言有效

$clickedElement = $form_state->getTriggeringElement()['#array_parents'][1];