Velden

In een formulier wil je soms de mogelijkheid hebben om een eigen veld toe te voegen omdat dit praktisch is. Symfony herkent niet standaard bijvoorbeeld een emailadres omdat dit in de database een string (varchar) of wellicht andere datatype is. Onderstaand zie je hoe je dit kan oplossen in een contactformulier.

php
//In de use-space staan de volgende twee regels erbij
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

//Verder op in de Class OrderType
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('emailaddress', EmailType::class, ['label' => 'Wat is je mailadres?'])
        ->add('question', null, ['label' => 'Wat is je vraag?'])
        ->add('submit', SubmitType::class, ['label' => 'Verstuur'])
    ;
}

Een voorbeeld van een formulier met een emailadres.

Die EmailType die je toevoegt zorgt ervoor dat het inputveld van het email adres in de HTML <input type="email"... krijgt in plaats van de standaard type="text". Voor het versturen zal de browser van de gebruiker een waarschuwing geven als het veld geen emailadres is, maar ook in de validatie in de Controller zal dit gecontroleerd worden.

Browservalidatie is niet genoeg
De gebruiker kan de voorkant zelf ook aanpassen. Valideer formulierdata daarom altijd ook in de backend via Symfony.

Mogelijke FieldTypes

Er zijn verschillende FieldTypes die je kan gebruiken. Hieronder een overzicht van de meest gebruikte:

Standaard / TextTypes

  • TextType — dit is de standaard en geeft een tekstveld
  • TextareaType — TextArea (groter invoerveld)
  • EmailType
  • IntegerType
  • MoneyType
  • NumberType
  • PasswordType
  • PercentType

Keuze Types

  • ChoiceType — zie voor meer uitleg formulieren en keuzes
  • EnumType
  • EntityType — zie voor meer uitleg formulieren en relaties
  • CountryType
  • LanguageType
  • LocaleType
  • TimezoneType
  • CurrencyType

Datum / tijd Types

  • DateType
  • DateIntervalType
  • DateTimeType
  • TimeType
  • BirthdayType
  • WeekType

Andere Types

  • CheckboxType
  • FileType
  • RadioType

Zoals je ziet zijn er heel veel types die je kan gebruiken. Sommige types hebben ook extra argumenten nodig. Welke opties je kan gebruiken kan je het beste lezen op de Symfony FieldTypes documentatie.