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

5uzkadbs  于 2022-12-17  发布在  PHP
关注(0)|答案(4)|浏览(123)

嗨,我想知道一种方法来获得在Drupal8表单中点击的按钮的索引ID。我有一个带有一些字段的表单。它有添加,删除,添加更多按钮。
我想在单击删除按钮时删除特定字段的值。为此,我需要知道所单击按钮的索引。我可以在Drupal 6和Drupal 7中实现这一点,但在Drupal 8中无法实现。

德鲁巴6号:

function field_add($form, &$form_state) {

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

德鲁巴7号:

function field_add($form, &$form_state) {

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

如何在Drupal 8中获得相同的功能?

fdbelqdn

fdbelqdn1#

我已经想通了,这里有一个在Drupal 8中实现它的方法。

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

lxkprmvk2#

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

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

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

nx7onnlm

nx7onnlm3#

在Drupal 8中,这在我的情况下是有效的

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

v8wbuo2f4#

在Drupal 9中,这对我很有效

$form_state->getUserInput()['_triggering_element_name'];

相关问题