Study
Symfony

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().

Editor Latihan

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.