我有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"在财产"电子邮件"。
没有考虑实体内的验证组..
是否有一种优雅的方式来验证帐户实体内的电子邮件?