работа с PrePersist в Symfony

0

Ну, я новичок в 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
    }
Теги:
registration

1 ответ

3

Ваш подход не очень хорошо разработан, потому что вы нарушаете принцип разделения интересов.

Ваша организация не должна знать ничего о базах данных или заявлениях или аналогичных, за что она не несет ответственности за это.

Снимите эту часть валидации с вашего объекта и перейдите к другому решению.

Я бы создал уникальное правило проверки, как здесь

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

И справляйтесь с этими ограничениями в своем контроллере, как здесь

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

Надеюсь это поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню