ex3v / formerrorsbundle
一个服务和Twig方法,用于在所有级别上显示所有表单错误。
v0.0.1
2014-09-17 09:32 UTC
This package is auto-updated.
Last update: 2024-09-16 03:06:07 UTC
README
此包包含两个东西
- 一个服务,将所有错误从表单导出到数组
- 一个Twig扩展,帮助将其作为列表显示
已经存在一个表单方法getErrorsAsString(),但它不提供标签。它还需要你在控制器中编写样板代码,或者编写自己的服务。如果你自己尝试列出所有错误,你会注意到$form->getErrors()只返回Form本身的错误,而不是特定字段或子表单的错误。为什么要费心创建自己的解析器?使用我的吧 :)
免责声明
我基于Symfony 2.3.13编写了这个包,用于我的个人目的,没有在其他版本上测试,但考虑到Fabien关于向后兼容性的说法,它至少应该在2.4版以及任何未来版本的Symfony2上工作,以及旧版本上。请记住,我不保证这一点,所以请随意测试、分支和修改。
安装
-
将此添加到您的composer.json文件中的require部分
"ex3v/formerrorsbundle": "dev-master"
-
将此添加到您的AppKernel.php文件中(在/app下)
new Ex3v\FormErrorsBundle\Ex3vFormErrorsBundle(),
然后在您的项目上运行composer update
以安装。
用法
在控制器中,除了添加FormView外,还要将Form对象添加到返回的数组中
return array(
'form' => $form->createView(),
'formFull' => $form
);
有了这个,你就可以在Twig中调用新方法
{{ all_form_errors(formFull) }}
此方法将(默认情况下)显示所有表单错误作为
- 列表,如下所示
<ul>
<li>Title: field cannot be empty.</li>
<li>Website: this is not a valid URL.</li>
</ul>
您可以通过添加额外的参数来自定义输出
{{ all_form_errors(formFull, "div", "myclass") }}
这将产生一个错误列表,其中每个错误都包裹在一个单独的div中,其类为"myclass"
<div class="myclass">
Title: field cannot be empty.
</div>
<div class="myclass">
Website: this is not a valid URL.
</div>
如果您想对错误有更多的控制,也可以在控制器中直接调用解析错误的服务的调用
$formErrorsParser = $this->get('formErrorsParser');
$errors = $formErrorsParser->parseErrors($form);
$errors数组将包含由以下内容组成的数组
- 字段名称
- 字段标签
- Symfony\Component\Form\FormError错误对象,它包含两种格式的错误消息(原始和翻译)以及字段值。
任何建议或贡献都热烈欢迎。祝您编码愉快!