我正在尝试使后端表单验证正常工作,但是当我删除前端验证时,它允许空白字段通过。
我正在关注文档,想知道是否还有其他人遇到此问题。
# 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>
编辑:
似乎表单验证不适用于重定向。我的坏事。
答案 0 :(得分:0)
似乎表单验证不适用于重定向。我的错。我应该提供完整的控制器。