在 symfony 中使用 PrePersist
working with PrePersist in symfony
好吧,我是 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
}
您的方法设计不佳,因为您违反了关注点分离原则。
你的实体不应该知道任何关于数据库或语句或类似的事情,因为它不对此负责。
从您的实体中删除验证部分并寻求其他解决方案。
我会像这里一样创建一个独特的验证规则
https://symfony.com/doc/current/reference/constraints/UniqueEntity.html
并像这里一样在你的控制器中处理这个约束
https://symfony.com/doc/current/validation.html
希望对您有所帮助
好吧,我是 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
}
您的方法设计不佳,因为您违反了关注点分离原则。
你的实体不应该知道任何关于数据库或语句或类似的事情,因为它不对此负责。
从您的实体中删除验证部分并寻求其他解决方案。
我会像这里一样创建一个独特的验证规则
https://symfony.com/doc/current/reference/constraints/UniqueEntity.html
并像这里一样在你的控制器中处理这个约束
https://symfony.com/doc/current/validation.html
希望对您有所帮助