Eigen velden in een formulier

Eigen velden in een formulier

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 contact formulier

//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. (De gebruiker kan immers de voorkant zelf ook aanpassen)

Mogelijke FieldTypes

Er zijn verschillende FieldTypes die je kan gebruiken, in een overzicht degene die het meeste gebruikt worden:

Standaard/ TextTypes

  • TextType - Dit is de tandaard en geeft een textveld
  • 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.