Folosesc Drupal 9. Creez un modul care are un formular cu un buton care va re-crea un alt formular similar cu primul.
Acesta este codul meu.
funcția publică buildForm(array $form, FormStateInterface $form_state) {
$baza de date = \Drupal::baza de date();
$rezultat = $baza de date->select('detalii_utilizator', 'u')
->fields('u', ['uid']);
$row = $rezultat->execute()->fetchAll();
$rowCount = count($row);
$form['buttons_multiple'] = [
'#type' => "container",
'#attributes' => ['style' => 'margin-top: 2em;'],
'add_chat' => [
'#type' => 'trimite',
'#value' => $this->t('Adăugați formular +'),
'#attributes' => [
'style' => 'dimensiunea fontului: 1.2em;',
],
'#submit' => ['::addForm'],
],
];
pentru ($counter = 1; $counter <= $rowCount; $counter++) {
$form['form_box_' . $counter] = [
'#type' => "container",
'nume_complet'.$counter => [
'#type' => 'câmp text',
'#title' => 'nume',
'#size' => 12,
'#required' => TRUE,
],
'buttons_single' => [
'#type' => "container",
'salvare'.$counter => [
'#type' => 'trimite',
'#value' => $this->t('Salvare'),
'#attributes' => [
'style' => 'dimensiunea fontului: 1em;',
],
'#submit' => ['::submitForm'],
],
],
'count' => [
'#type' => 'ascuns',
'#value' => $counter,
],
];
}
}
funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {
$nume = $form_state->getValue('nume_complet');
$contor = $form_state->getValue('count');
$form_state->set('valori_utilizator', [
'nume' => $form_state->getValue('nume'),
]);
// În scop de testare. Afișează numele complet
$this->messenger()->addMessage($this->t('Bună, numele tău este %name.', ['%name' => $name]));
}
funcția publică addForm(matrice &$form, FormStateInterface $form_state) {
$valori = [
[
'full_name' => ''',
],
];
$baza de date = \Drupal::baza de date();
$interogare = $database->insert('user_details')->fields(['full_name']);
foreach ($valori ca $detalii) {
$interogare->valori($detalii);
}
$interogare->execute();
}
Pe baza codului de mai sus, primesc doar numele ultimului formular adăugat chiar dacă am făcut clic pe butonul salvat al primului formular.
Cum voi lucra la butonul salvat pentru fiecare formular?
Multumesc anticipat.