In Synfony 2 ein Doctrine Entity Feld in einer Form im Type ändern

Heute wollte ich in einem Formular nicht nur einfach ein Selectfeld zur Auswahl einer Adresse anbieten sondern eine komplexe Suche dafür verwenden.

Zuerst habe ich das entsprechende Feld in der FormType als „hidden“ Widget definiert.

class JobType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Address','hidden')

 

Aber leider gibt das nur die Fehlermeldung


Catchable Fatal Error: Argument 1 passed to WB\CoreBundle\Entity\Job::setAddress() must be an instance of WB\CoreBundle\Entity\Address, string given, called in .../vendor/symfony/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 538 and defined in ../src/WB/CoreBundle/Entity/Job.php line 580
500 Internal Server Error - ErrorException

Nach kurzer Suche bin ich auf die Data Transformers gestossen. Damit ist es möglich eine Übersetzer für Objekte einzubauen, was eine sehr elegante Lösung ist. Mit Hilfe einer Transform Class die zwischen dem From Element in der View und dem im Controller sitzt definiert wie die Daten transformiert werden. Eingebaut und funktioniert einwandfrei.