проверка symfony не работает

Я думаю, есть что-то, что мне не хватает. У меня есть объект User, который проверяется через файл yml, но каждый раз, когда я отправляю запрос на отправку на маршрут, кажется, что он не получает мой запрос. Под этим я подразумеваю, что маршрут работает нормально, но я продолжаю получать сообщения об ошибках, что пароль и имя пользователя не должны быть пустыми (из-за ограничений, которые я установил). Так что, похоже, мой запрос не проверяется на объект.

Я позаботился о том, чтобы эти настройки были активированы в моей конфигурации: validation: { enabled: true, enable_annotations: true }

Вот мой routing.yml:

user_login_homepage:
    path:     /check
    defaults: { _controller: UserLoginBundle:Login:checkCredentials }
    methods: [POST]

Вот мой validation.yml

User\UserBundle\Entity\User:
    properties:
        username:
            - NotBlank: ~
        password:
            - NotBlank: ~

Вот мой контроллер (LoginController.php)

public function checkCredentialsAction(Request $request)
{
    $recursiveValidator = $this->get('validator');

    $user = new User();

    $errors = $recursiveValidator->validate($user);

    if (count($errors) > 0) {
        $errorsString = (string) $errors;
        return new Response($errorsString);
    }

    return new Response('Yuppy');
}

Я только что пытался следовать инструкциям, но у меня не получается :( Я что-то упустил?


person Roberto Rizzi    schedule 25.08.2017    source источник


Ответы (1)


вы создаете пустого пользователя, поэтому исправьте ошибку, попробуйте это (я думаю, что имя пользователя и пароль передаются в данные POST, верно?):

$user = new User();
$postData = $request->request->all();
$user->setUsername($postData['username'];
$user->setPassword($postData['password'];

$errors = $recursiveValidator->validate($user);
person Alessandro Minoccheri    schedule 25.08.2017
comment
Да, большое спасибо. Да, они передаются POST. Просто вопрос, связанный с вашим решением. Не сохраняет ли эти данные в таблице таким образом? - person Roberto Rizzi; 25.08.2017
comment
Таким образом, вы заполняете объект, проверяете ошибки и после того, как вы можете сохранить его или что хотите, если вы используете форму symfony, вы можете автоматически заполнить пользователя формой, переданной формой. - person Alessandro Minoccheri; 25.08.2017
comment
Да, я знаю это, но разница в этом случае заключается в том, что я не использую форму, так что это немного по-другому! Приветствую человека! :) - person Roberto Rizzi; 25.08.2017