работа с PrePersist в Symfony - PullRequest
0 голосов
/ 02 июля 2018

Ну, я новичок в 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
    }

1 Ответ

0 голосов
/ 02 июля 2018

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

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

Отбросьте части проверки из вашей сущности и найдите другое решение.

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...