ฉันมีรูปแบบที่ค่อนข้างซับซ้อนตาม \Drupal\Core\Form\FormBase
ที่มีหลายช่อง (ซ้อนบางส่วน) และต้องการส่งเนื้อหาทั้งหมดในอีเมลเมื่อส่ง
ปัจจุบันฉันมี
ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state)
{
foreach ($form_state->getValues() เป็น $key => $value) {
ถ้า (!empty($form[$key]['#title']) && $key != 'images') {
$values[$form[$key]['#title']->render()] = $value;
}
}
...
# ต่อไปฉันจะจัดรูปแบบอาร์เรย์ $values เป็นรายการ HTML
นี่จะแสดงเฉพาะฟิลด์ที่ระดับบนสุดของแบบฟอร์ม แต่ฉันมีฟิลด์ภายในกลุ่ม
มีวิธีที่ดีและสะอาดในการแสดงค่าของฟิลด์ทั้งหมดหรือไม่ หรือฉันต้องวนซ้ำและแยกวิเคราะห์ด้วยตนเองผ่าน $รูปแบบ
อาร์เรย์?
ฉันสามารถใช้ตัวเรนเดอร์สำหรับสิ่งนี้ได้ไหม
แก้ไข:
ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
// ...
$แบบฟอร์ม['บริษัท'] = [
'#type' => 'คอนเทนเนอร์',
];
$แบบฟอร์ม['บริษัท']['ชื่อบริษัท'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('ชื่อบริษัท'),
];
โดยสรุป:
ฉันจะวนซ้ำฟิลด์ทั้งหมด รวมถึงฟิลด์ที่อยู่ในคอนเทนเนอร์และรับค่า + ป้ายกำกับ (ไม่ใช่เฉพาะชื่อทางเทคนิค) ได้อย่างไร มีตัวช่วยดีๆ สำหรับสิ่งนี้ไหม หรือฉันต้องทำเองทั้งหมด?