Ну, я новичок в 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
Надеюсь это поможет