I have two entities in my system: Person
and Phone
as the following code.
class Person
{
/**
* @ORM\\Id
* @ORM\\Colum
It is also possible to use a very simple data Transformer to solve this problem.
Create your Phone data transformer :
class PhoneTransformer implements DataTransformerInterface
{
public function transform($phone)
{
if (is_null($phone))
return new Phone();
return $phone;
}
public function reverseTransform($phone)
{
if (is_null($phone))
return null;
if (!$phone->getType() && !$phone->getCountryCode() /* ... Test if phone is not valid here */)
return null;
return $phone;
}
Then simply prepend this transformer in your PhoneType form :
class PhoneType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
/* Add fields here :
->add( ... )
*/
->prependNormTransformer(new PhoneTransformer())
;
}
}
See http://symfony.com/doc/2.0/cookbook/form/data_transformers.html for more details on how implement data transformers.