【问题标题】:How to get triggered button id in Drupal 8 Form如何在 Drupal 8 表单中获取触发按钮 ID
【发布时间】:2018-12-08 11:59:49
【问题描述】:

您好,我想知道一种方法来获取在 Drupal 8 表单中单击的按钮的索引 ID。 我有一个包含一些字段的表格。它有添加、删除、添加更多按钮。

我想在单击删除按钮时删除特定字段的值。 为此,我需要知道单击按钮的索引。我能够在 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 中获得相同的效果?

【问题讨论】:

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


    【解决方案1】:

    我想通了。 这是在 Drupal 8 中实现它的一种方法。

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

    【讨论】:

    • 奇怪,对我来说有效:$form_state->getTriggeringElement()['#parents'][0];
    【解决方案2】:

    在 Drupal 8 中,这对我来说是有效的

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 这比回复#array_parents 更脆弱。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多