如何在提交之前预先检查不同sql表中的表单值 - symfony

时间:2018-01-23 15:06:55

标签: php mysql symfony

我有一个注册表格,其中包含客户编号,后跟姓名,地址,电子邮件和密码。 客户端编号与表单的其他部分不在同一个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表相关。

1 个答案:

答案 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.
}