Labels in formulieren

Niet de standaard database veldnaam, maar eigen label

Standaard als je een formulier hebt gemaakt krijg je (ongeveer) de volgende code in de FieldType class in de map src/From.

public function buildForm(FormBuilderInterface $builder, array $options): void
{
    $builder
        ->add('firstname')
        ->add('lastname')
        ->add('address')
        ->add('submit', SubmitType::class, ['label' => 'Verzenden'])
    ;
}
Voorbeeld van een basis formulier, met SubmitType voor de button.
Dit geeft een formulier met velden en labels in de velden met firstname, lastname en address. Dit is natuurlijk niet de bedoeling, als eerste ziet het er niet mooi uit en als onze applicatie in een andere taal dan Engels is past het ook niet bij de rest van de applicatie.

Een eigen naam/ label maken

De ->add() methode kan drie argumenten meegestuurd krijgen. De eerste is de naam van het veld uit de database, de tweede het Type (Zoals SubmitType) en de derde is een array van opties. Een van die opties die je mee kan geven is de optie voor label. ALs je de key label maakt en de waarde vervolgens de naam van het veld die je wilt tonen, zal je die in jouw formulier terugzien.

public function buildForm(FormBuilderInterface $builder, array $options): void
{
    $builder
        ->add('firstname', null, ['label' => 'Wat is je voornaam?'])
        ->add('lastname', null, ['label' => 'Wat is je achternaam?'])
        ->add('address', null, ['label' => 'Wat is je address?'])
        ->add('submit', SubmitType::class, ['label' => 'Bestel deze pizza'])
    ;
}
Een voorbeeld formulier met labels

In dit voorbeeld laten we de FieldType leeg (dit mag), Symfony zoekt dan vanuit de datatype van het veld in de database een passende FieldType. De derde optie zie je een array tussen de rechte haken [ ] met 1 item in de array namelijk 'label' => 'Naam van de label'.
Als je op deze manier werkt zal jouw formulier nette labels krijgen.