wiki/content/20201117103506-callback_functions_to_get_set_form_fields.md

1.1 KiB

date id title
2020-11-17 7d7fc5e8-0fcd-47d7-8857-3f499655d7f2 Callback Functions To Get/Set Form Fields

Description

Use callback functions to get/set form fields. Data mapper is no longer needed when getter/setter methods don't directly correlate to property names.

Syntax

// src/Form/Type/ProductType.php
namespace App\Form\Type;

use App\Entity\Person;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;

class PersonType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class, [
                'getter' => function (Person $person, FormInterface $form): string {
                    return $person->getUserData()->getFirstName();
                },
                'setter' => function (Person &$person, ?string $name, FormInterface $form): void {
                    $person->rename($name);
                },
            ])

            // ...
        ;
    }

    // ...
}