Я использую 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) {
$запрос->значения($детали);
}
$запрос->выполнить();
}
Основываясь на приведенном выше коде, я получаю только имя последней добавленной формы, даже если я нажал сохраненную кнопку первой формы.
Как я буду работать с сохраненной кнопкой для каждой формы?
Заранее спасибо.