Symfony3 Forms:PropertyAccessor需要一个对象或数组的图形来操作

时间:2017-01-16 00:13:16

标签: php forms symfony

我有2个实体:帐户和患者:

class Patients
{
//..

/**
 * @var Accounts
 *
 * @ORM\OneToOne(targetEntity="Accounts", mappedBy="patients")
 * @Assert\Valid()
 */
private $accounts;
 // ..
}

class Accounts {

// ...

/**
 * @var Patients
 *
 * @ORM\OneToOne(targetEntity="Patients", inversedBy="accounts")
 * @ORM\JoinColumn(name="patients_id", referencedColumnName="id")
 *
 */
private $patients;

/**
 * @var string
 *
 * @ORM\Column(name="email", type="string", length=100, nullable=true, unique=true)
 * @Assert\NotBlank(groups={"emailValidation"})
 * @Assert\Email(groups={"emailValidation"})
 *
 */
private $email;
/// ...
}

我需要使用患者信息(名字,姓氏,电子邮件)构建一个表单并验证它。

我是这样做的:

class PatientsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
         // ..... 
         ->add('email', EmailType::class, array(
            'mapped' => $options['formState'] == 'display' ? false : true,
            'property_path' => 'accounts.email',
            'data' => $options['email']
        ))
 }
       //....
       $resolver->setDefaults(
        array(
            'formState' => 'display',
      //...
}

  

'映射' => $ options [' formState'] ==' display' ? false:是的,

我必须制作一个丑陋的解决方法,因为没有它我有两种情况:

1

->add('email', EmailType::class, array(
        'property_path' => 'accounts.email',
        'data' => $options['email']
   ))

会出现以下错误:

  

PropertyAccessor需要一个对象或数组的图形来操作,   但它找到了类型" NULL"在试图穿越路径时   " accounts.email"在财产"电子邮件"。

  1. - > add(' email',EmailType :: class,array(     '映射' =>假,     ' property_path' => ' accounts.email&#39 ;,     '数据' => $选择['电子邮件']     ))
  2. 没有考虑实体内的验证组..

    是否有一种优雅的方式来验证帐户实体内的电子邮件?

0 个答案:

没有答案