Tôi đang sử dụng Drupal 9. Tôi đang tạo một mô-đun có biểu mẫu có nút sẽ tạo lại một biểu mẫu khác tương tự như biểu mẫu đầu tiên.
Đây là mã của tôi.
chức năng công khai buildForm(mảng $form, FormStateInterface $form_state) {
$database = \Drupal::database();
$result = $database->select('user_details', 'u')
->trường('u', ['uid']);
$row = $result->execute()->fetchAll();
$rowCount = đếm($row);
$form['buttons_multiple'] = [
'#type' => "thùng chứa",
'#attributes' => ['style' => 'margin-top: 2em;'],
'add_chat' => [
'#type' => 'gửi',
'#value' => $this->t('Thêm biểu mẫu +'),
'#thuộc tính' => [
'phong cách' => 'cỡ chữ: 1.2em;',
],
'#submit' => ['::addForm'],
],
];
for ($counter = 1; $count <= $rowCount; $counter++) {
$form['form_box_' . $bộ đếm] = [
'#type' => "thùng chứa",
'full_name'.$count => [
'#type' => 'trường văn bản',
'#title' => 'tên',
'#size' => 12,
'#required' => ĐÚNG,
],
'buttons_single' => [
'#type' => "thùng chứa",
'save'.$counter => [
'#type' => 'gửi',
'#value' => $this->t('Save'),
'#thuộc tính' => [
'phong cách' => 'cỡ chữ: 1em;',
],
'#submit' => ['::submitForm'],
],
],
'đếm' => [
'#type' => 'ẩn',
'#value' => $count,
],
];
}
}
hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {
$name = $form_state->getValue('full_name');
$count = $form_state->getValue('count');
$form_state->set('user_values', [
'tên' => $form_state->getValue('tên'),
]);
// Dành cho mục đích thử nghiệm. Hiển thị tên đầy đủ
$this->messenger()->addMessage($this->t('Xin chào, tên bạn là %name.', ['%name' => $name]));
}
hàm công cộng addForm(mảng &$form, FormStateInterface $form_state) {
giá trị $ = [
[
'full_name' => '',
],
];
$database = \Drupal::database();
$query = $database->insert('user_details')->fields(['full_name']);
foreach ($values as $details) {
$query->values($details);
}
$query->execute();
}
Dựa trên đoạn mã trên, tôi chỉ nhận được tên của biểu mẫu được thêm lần cuối ngay cả khi tôi đã nhấp vào nút đã lưu của biểu mẫu đầu tiên.
Tôi sẽ làm việc trên nút đã lưu cho mỗi biểu mẫu như thế nào?
Cảm ơn bạn trước.