php - Symfony 4 - 自定义表单错误消息
问题描述
我的网站上有一个简单的表格。提交和数据库输入完美,但问题是错误消息显示,我想使用两种方式,不确定它们是否也可以一起使用。
我想显示在表单类文件中声明的错误消息:
->add('firstname', TextType::class, array(
'required' => true,
'label' => 'Name(s)',
'attr' => array(
'class' => 'form-control',
'data-required-message' => 'Please enter patient name!'
),
'constraints' => array(
new Constraints\NotBlank()
)))
与/或
我想显示在实体类文件中声明的错误:
/**
* @var string
* @ORM\Column(type="string",name="first_name", length=50)
* @Assert\NotBlank
*/
protected $firstName;
目前我没有上述任何一种,但我想做的是通过控制器通过以下方式获取错误:
/**
* @Route("/patient/add", name="patient_add")
*/
public function add(Request $request)
{
$formOptions = array(
'FacilityRepositoryObject' => $this->getDoctrine()->getRepository(Facility::class),
'SFGuardUserObject' => $this->getDoctrine()->getRepository(SFGuardUser::class)
);
$errors = array();
$patientAddForm = $this->createForm(PatientForm::class, null, $formOptions);
$patientAddForm->handleRequest($request);
if($patientAddForm->isSubmitted()) {
$formData = $patientAddForm->getData();
if($patientAddForm->isValid()) {
$this->addPatient($formData);
} else {
$errors = $patientAddForm->getErrors();
}
}
return $this->render('patient/add.html.twig', array(
'addForm' => $patientAddForm->createView(),
'errors' => $errors;
));
}
我需要三样东西:-
- 能够显示实体类文件中定义的错误消息。
- 能够显示在表单类文件中定义的错误消息。
- 通过控制器获取错误消息并将它们显示在 twig 模板文件中。
我读到的另一种方法是在序列化“$patientAddForm->getErrors()”方法并让输出显示在 twig 文件中但只返回一个空数组时使用规范化器,我还在某个地方读到了这需要一个规范化器/序列化器来从中获取错误。
请帮忙!:)
问候, Mzimhle
解决方案
这可以帮助你:
private function getErrorsFromForm(FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $error) {
$errors[] = $error->getMessage();
}
foreach ($form->all() as $childForm) {
if ($childForm instanceof FormInterface) {
if ($childErrors = $this->getErrorsFromForm($childForm)) {
$errors[$childForm->getName()] = $childErrors;
}
}
}
return $errors;
}
推荐阅读
- python - 如何解决排序和组合问题
- c++ - 在可变参数模板参数列表中传递 const char* 会导致链接器错误
- javascript - 如何从 fetch 的数据中填充 div
- node.js - 我的一个朋友正在尝试自动化一个过程,在这个过程中,机器人会将 instagram 故事作为视频从特定文件夹发布
- python - 错误:“输入路径不存在”停止执行 AWS Glue 作业(pyspark 脚本)
- react-native - 如果该库仅支持 iOS 和 Android,但不支持 Web,则应用程序无法为 Web 编译
- javascript - 斜杠命令:DiscordAPIError:未知的 Webhook 错误?
- wordpress - 如何更改编辑帐户模板表单中添加的电话值?
- arrays - 如何在scala数组中用0替换null
- browser - 如何在表单上禁用浏览器自动完成/自动填充?