php - 插入错误数据时验证如何给出错误。在 symfony 中处理 isValid()?
问题描述
控制器功能:
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。谁能告诉我如何在这里使用验证?
解决方案
enable_annotations: true
意味着您通过注释定义验证约束。注释看起来像这样:
class Author
{
/**
* @Assert\NotBlank // apply NotBlank validator
*/
public $name;
}
在您的代码中,您使用在yaml
文件中定义的验证规则,因此它绝对不是注释。
因此,要么将验证规则移动到 annotations,要么remove enable_annotations:true
,只留下
validation: { enabled: true }
推荐阅读
- c# - 如何从 WPF 后面的代码中使用 ItemsControl 创建 DataTemplate
- c++ - 如何识别 C++ 代码中的可执行行
- excel - Microsoft Excel - 将时间分为白天和黑夜
- bash - 如何捕获和退出所有子进程
- javascript - Change the value of object in an array on click event
- multithreading - 可以从运行 root.mainloop() 的线程以外的线程调用 tkinter root.after 吗?
- random - random numbers distributed across cells in Google Sheets
- dojo - Is there any way to use query method with dstore?
- c# - 在进入下一个场景之前重复打字机脚本的最后一行?
- swift - SwiftUI - 设置背景颜色时大型导航栏损坏