表单验证未返回错误

时间:2020-08-28 14:58:33

标签: symfony

我正在尝试使后端表单验证正常工作,但是当我删除前端验证时,它允许空白字段通过。

我正在关注文档,想知道是否还有其他人遇到此问题。

# config/packages/framework.yaml
framework:
    validation: { enable_annotations: true }
<?php

namespace App\Entity;

use App\Repository\CommentRepository;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=CommentRepository::class)
 */
class Comment
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @Assert\NotBlank
     */
    private $name;
<?php
namespace App\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;

class CommentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class, ['required' => true])
            ->add('email', EmailType::class, ['required' => true])
            ->add('body', TextareaType::class, ['required' => true])
            ->add('submit', SubmitType::class);
    }
}

和控制器

<?php

namespace App\Controller;

use App\Entity\Comment;
use App\Form\Type\CommentType;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class CommentController extends AbstractController
{
    public function create(Request $request, $parent_id)
    {
        $form = $this->createForm(CommentType::class);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
    ...

表单本身是

{{ form_start(form, {'action': path('app.comment.create', { parent_id: parent_id })}) }}

    <div class="my-custom-class-for-errors">
        {{ form_errors(form) }}
    </div>

    <div class="row">
        <div class="col-md-6 mb-3">
            <div class="form-group">
                {{ form_label(form.name, 'Name') }}
                {{ form_widget(form.name, {'attr': {'class': 'form-control'}}) }}
            </div>
        </div>

        <div class="col-md-6 mb-3">
            <div class="form-group">
                {{ form_label(form.email, 'Email') }}
                {{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
            </div>
        </div>
        <div class="col-md">
            <div class="form-group">
                {{ form_label(form.body, 'Comment') }}
                {{ form_widget(form.body, {'attr': {'class': 'form-control'}}) }}
            </div>
        </div>
    </div>

    {{
        form_row(form.submit, {
            'label': button_text ?? 'Add Comment',
            'attr': { 'class': 'form-control btn-primary btn-blue' }
        })
    }}
{{ form_end(form) }}

即使它们是空的,表格仍在传递鲜艳的色彩。

Id对此表示感谢。我从Laravel> _ << / p>

编辑:

似乎表单验证不适用于重定向。我的坏事。

1 个答案:

答案 0 :(得分:0)

似乎表单验证不适用于重定向。我的错。我应该提供完整的控制器。