【问题标题】:working with PrePersist in symfony在 symfony 中使用 PrePersist
【发布时间】:2018-12-10 10:04:47
【问题描述】:

好吧,我是 symfony 的初学者,到目前为止,我开发了一个网站,用户可以在其中注册自己并在登录后动态创建表单,但是我的注册表单不能按预期工作。我的基本想法是当用户尝试注册自己时,预先检查他输入的客户号码是否已经存在于数据库中,如果不是这样,该函数会抛出一个错误,下面的代码是我到目前为止的想法但它没有似乎不起作用。究竟可能是什么问题?

//src/AppBundle/Entity/User.php

    /**
    * @ORM\PrePersist
    * groups={"Registration", "Profile"}
    */
    public function onPrePersist() //orm doctrine
    {
        $data = checkFirma($_POST['clientNr']);
        if(empty($data) || $data = ""){
            throw new Exception("Client Nr is mandatory");
        }
        else{
            $this->company = $data['userid'];
            $this->rolle = $data['rolle'];
        }

    }
    public function checkFirma($clientnr){
        $connection = $em->getConnection();
        $statement = $connection->prepare('SELECT userid, clientNr, rolle FROM companyClient WHERE clientNr = :nr');
        $statement->bindValue('nr', $clientnr);
        $statement->execute();
        $result = $statement->fetchAll('EAGER');
        //return $result
    }

【问题讨论】:

    标签: php mysql symfony registration


    【解决方案1】:

    您的方法设计得不是很好,因为您违反了关注点分离原则。

    您的实体不应该知道有关数据库或语句或类似的任何事情,因为它不对此负责。

    从您的实体中删除该验证部分并寻求其他解决方案。

    我会像这里一样创建一个独特的验证规则

    https://symfony.com/doc/current/reference/constraints/UniqueEntity.html

    并像这里一样在您的控制器中处理此约束

    https://symfony.com/doc/current/validation.html

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多