Form Component
Penjelasan
Untuk form yang kompleks, Symfony punya Form component yang jauh lebih terstruktur dibanding validasi manual: kamu definisikan FormType class yang mendeskripsikan field-field form-nya sekaligus aturan validasinya, lalu form itu di-bind ke Entity, dirender otomatis, dan divalidasi otomatis saat submit.
Contoh Konsep
<?php
namespace App\Form;
use App\Entity\Produk;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ProdukType extends AbstractType
{
public function buildForm($builder, array $options): void
{
$builder
->add('nama', TextType::class)
->add('harga', NumberType::class);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(['data_class' => Produk::class]);
}
}
// Dipakai di controller:
$produk = new Produk();
$form = $this->createForm(ProdukType::class, $produk);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $produk sudah terisi otomatis dari input form
}
Praktikum
Buat ArtikelType (FormType) untuk Entity Artikel dengan field judul (TextType) dan isi (TextareaType). Tulis contoh pemakaiannya di controller: createForm(), handleRequest(), dan pengecekan isSubmitted() && isValid().
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Form component OTOMATIS memakai Constraints yang sudah didefinisikan di Entity (lewat attribute #[Assert\...]) untuk validasi — kamu tidak perlu menulis ulang aturan validasi di FormType kalau sudah didefinisikan di Entity-nya.