Optional embed form in Symfony 2

前端 未结 5 1955
予麋鹿
予麋鹿 2021-01-16 11:00

I have two entities in my system: Person and Phone as the following code.

class Person
{
    /**
     * @ORM\\Id
     * @ORM\\Colum         


        
5条回答
  •  温柔的废话
    2021-01-16 11:17

    It is also possible to use a very simple data Transformer to solve this problem.

    1. 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;
      }
      
    2. 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.

提交回复
热议问题