Symfony3 Form component trying to pass null to a type hinted method in PHP 7 -
in entity class have defined expected argument types setters , return types of getters. later, when have form uses said class, error if of fields in form empty because form component tries pass null setter instead of string.
i following exception when submit form:
expected argument of type "string", "null" given
500 internal server error - invalidargumentexception
the exception thrown vendor/symfony/symfony/src/symfony/component/propertyaccess/propertyaccessor.php @ line 254
is there way convert "null" value empty string before passing object, , let validator argue it?
i see 2 options here:
quick , dirty - make argument passed setter optional:
public function settitle(string $title = null) { $this->title = $title; return $this; }
probably better - use data transformer in formtype:
data transformers allow modify data before gets used.
$builder // ... ->add('title', 'text') // ... ; $builder->get('title')->addmodeltransformer(new callbacktransformer( function($originalinput){ return $string; }, function($submittedvalue){ // when null cast string, empty. return (string) $submittedvalue; } ));
i've posted another answer before using retrieve method retrieve entity object before. see if helps see more complicated example.