Я использую Drupal 9. Я создаю модуль, который имеет форму с кнопкой, которая будет воссоздавать другую форму, аналогичную первой.
Это мой код.
общедоступная функция buildForm (массив $ form, FormStateInterface $ form_state) {
  $database = \Drupal::database();
  $result = $database->select('user_details', 'u')
    ->fields('u', ['uid']);
  $row = $result->execute()->fetchAll();
  $rowCount = количество ($ row);
  $form['buttons_multiple'] = [
    '#type' => "контейнер",
    '#attributes' => ['style' => 'margin-top: 2em;'],
    'добавить_чат' => [
      '#type' => 'отправить',
      '#value' => $this->t('Добавить форму +'),
      '#атрибуты' => [
        'стиль' => 'размер шрифта: 1.2em;',
      ],
      '#submit' => ['::addForm'],
    ],
  ];
  for ($counter = 1; $counter <= $rowCount; $counter++) {
    $ форма ['form_box_' . $счетчик] = [
      '#type' => "контейнер",
      'полное_имя'.$counter => [
        '#тип' => 'текстовое поле',
        '#название' => 'имя',
        '#размер' => 12,
        '#required' => ИСТИНА,
      ],
      'buttons_single' => [
        '#type' => "контейнер",
        'сохранить'.$counter => [
          '#type' => 'отправить',
          '#value' => $this->t('Сохранить'),
          '#атрибуты' => [
            'стиль' => 'размер шрифта: 1em;',
          ],
          '#submit' => ['::submitForm'],
        ],
      ],
      'счетчик' => [
        '#type' => 'скрытый',
        '#значение' => $счетчик,
      ],
    ];
  }
}
публичная функция submitForm (массив и $ форма, FormStateInterface $ form_state) {
  $name = $form_state->getValue('full_name');
  $counter = $form_state->getValue('count');
        
  $form_state->set('user_values', [
    'имя' => $form_state->getValue('имя'),
  ]);
  // Для целей тестирования. Показать полное имя
  $this->messenger()->addMessage($this->t('Привет, вас зовут %name.', ['%name' => $name]));
}
общедоступная функция addForm (массив и $ форма, FormStateInterface $ form_state) {
  $значения = [
    [
      'полное_имя' => '',
    ],
  ];
    
  $database = \Drupal::database();
  $query = $database->insert('user_details')->fields(['full_name']);
  foreach ($values как $details) {
    $запрос->значения($детали);
  }
  $запрос->выполнить();
}
Основываясь на приведенном выше коде, я получаю только имя последней добавленной формы, даже если я нажал сохраненную кнопку первой формы.
Как я буду работать с сохраненной кнопкой для каждой формы?
Заранее спасибо.