我有一个注册表格,其中包含客户编号,后跟姓名,地址,电子邮件和密码。 客户端编号与表单的其他部分不在同一个sql表中,它已经预定义,一旦用户提交表单,我需要在sql表中预先检查客户端编号,如果用户输入了给定的一个。 此后,用户注册并获得确认电子邮件。 我的解决方案是将它分成两种形式,因为让它以一种形式工作是相当棘手的,有没有人有更好的想法? 这是User.php的一段代码摘录
class User extends BaseUser{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=50)
*
* @Assert\NotBlank(message="type in your name.", groups={"Registration", "Profile"})
* groups={"Registration", "Profile"}
*
*/
public $name;
/**
* @ORM\Column(type="integer", length=50)
*
* @Assert\NotBlank(message="enter your client number.", groups={"Registration", "Profile"})
* groups={"Registration", "Profile"}
*
*/
public $clientnumber;
/**
* @ORM\Column(type="integer", length=11)
*/
clientnumber不属于表单注册,因为它位于不同的sql表中,但需要在最终插入之前进行检查,在抽象层中我只能与一个sql表相关。
答案 0 :(得分:1)
您可以在用户实体中使用 onPrePersist 方法。
使用fllowing更新您的用户实体的doctrine orm文件。
<lifecycle-callbacks>
<lifecycle-callback type="prePersist" method="prePersist" />
</lifecycle-callbacks>
然后使用以下内容更新用户实体文件。
/**
* @PrePersist
*/
public function onPrePersist()
{
// verify the client number value from whatsoever entity here.
}