Как валидация выдает ошибку при вставке неверных данных. работает на isValid () в Symfony? - PullRequest
0 голосов
/ 08 марта 2019

Функция контроллера:

public function new(Request $request)  
    {  
        $post = new Post();  
        $form = $this->createForm(PostType::class, $post);     

        $form->handleRequest($request);

        if ($form->isSubmitted()){

        if($form->isValid()) {
            die('working');
        }
        else
        {
            die("error");
        }
    }

        return $this->render('post/index.html.twig',[
            'form' => $form->createView(),
        ]);
    }

В config / validator / validation.yaml

App\Entity\post:  
    properties:  
        title:  
            - Length:  
                min: 2  
                max: 50  
                minMessage: 'Your first name must be at least {{ limit }} characters long'  
                maxMessage: 'Your first name cannot be longer than {{ limit }} characters'

Форма Класса:

class PostType extends AbstractType {  
    public function buildForm(FormBuilderInterface $builder, array $options)  
    {  
        $builder  
            ->add('title',TextType::class,[  
                'attr' => [  
                    'placeholder' => 'Enter Title',  
                    'class' => 'Some Class',  
                ]  
            ])  
            ->add('description',TextareaType::class,[  
                'attr' => [  
                    'placeholder' => 'Enter Description',  
                    'class' => 'Some Class'  
                ]  
            ])  
            ->add('Save',SubmitType::class,[  
                'attr' => [  
                    'class' => 'btn btn-success'  
                ]  
            ])  
        ;
    }

Я также добавил

validation: { enable_annotations: true } в config / packages / framework.yaml

Вопрос: Я вставляю один алфавит, скажем «z» в заголовке. Он должен вернуть ошибку проверки. isValid () должен давать false, но он дает true. Может кто-нибудь сказать мне, как использовать проверку здесь?

1 Ответ

0 голосов
/ 08 марта 2019

enable_annotations: true означает, что вы определяете ограничения проверки с помощью аннотаций. Аннотация выглядит так:

class Author
{
    /**
     * @Assert\NotBlank    // apply NotBlank validator
     */
    public $name;
}

В вашем коде вы используете правила проверки, определенные в файле yaml, поэтому это, безусловно, , а не аннотации.

Итак, либо переместите правила проверки в аннотации , либо удалите enable_annotations:true, оставив только

validation: { enabled: true }
...