ฉันใช้แบบฟอร์มสองประเภทสำหรับหนึ่งหน้าในโครงการ Symfony ของฉัน ฉันทำเช่นนี้เพื่อให้ผู้ใช้ตัดสินใจระหว่างสองตัวเลือกในการสร้างเอกสารใหม่
วิธีสร้างเพจ: มีช่องข้อความหลายช่องที่ต้องกรอก ทั้งหมดเป็นของ DocumentCreateType ของฉัน และยังรวมส่วนที่ถูกต้องของตัวเลือกด้วย (เลือก IATA ด้วยตนเอง) ที่คุณเห็นในภาพ แบบฟอร์มประเภทที่สองของฉัน (UploadProfileType) มีเมนูแบบเลื่อนลงสามรายการเหมือนกันบวกกับรายการเพิ่มเติม (ตลาด ช่องทาง1 และผลิตภัณฑ์) แต่อยู่ที่ไซต์ด้านซ้ายของตัวเลือก (ใช้โปรไฟล์อัปโหลด)
ดังนั้น ขึ้นอยู่กับสิ่งที่ผู้ใช้เลือก จะต้องส่งเฉพาะ DocumentCreateType หรือแบบฟอร์มทั้งสองประเภทต้องถูกส่งและคงอยู่
ฉันจะทำให้สิ่งนี้ทำงานในคอนโทรลเลอร์ของฉันได้อย่างไร จนถึงตอนนี้คอนโทรลเลอร์ของฉันดูเหมือนเป็นเช่นนั้น แต่ข้อมูลไม่ถูกต้อง
$upForm = $this->createForm(UploadProfileType::class, $document, array('user' => $currentuser));
$form = $this->createForm(DocumentCreateType::class, $document);
$form->handleRequest($request);
$upForm->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
...
}
ChoiceType สำหรับตัวเลือกระหว่างโปรไฟล์การอัปโหลดและ IATA มีลักษณะเช่นนั้นและจัดการโดย javascript:
$builder
->add('use_upload_profile', ChoiceType::class, array(
'choices' => array(
true => 'label.use_upload_profile',
false => 'label.select_iatas_manually'
),
'mapped' => false,
'expanded' => true,
'label' => false,
'data' => true,
'translation_domain' => 'Documents'))
;
}