【发布时间】:2012-02-08 20:35:59
【问题描述】:
我正在使用 Symfony2 和 FOSUserBundle。
如果我在注册表中输入用户名或电子邮件地址,而该注册表已在数据库中,则会在注册表顶部显示错误。
如何将错误消息放到用户名/电子邮件字段中?
【问题讨论】:
标签: forms symfony fosuserbundle
我正在使用 Symfony2 和 FOSUserBundle。
如果我在注册表中输入用户名或电子邮件地址,而该注册表已在数据库中,则会在注册表顶部显示错误。
如何将错误消息放到用户名/电子邮件字段中?
【问题讨论】:
标签: forms symfony fosuserbundle
阅读文档 Rendering each Field by Hand
{{form_errors(form.username)}}
{{form_errors(form.)}}
或创建您的表单主题 Global Form Theming
【讨论】:
<constraint name="FOS\UserBundle\Validator\Unique"> <option name="property">usernameCanonical</option> <option name="message">The username is already used</option> <option name="groups"> <value>Registration</value> <value>Profile</value> </option> </constraint> 但是注册表单没有呈现usernameCanonical字段。所以错误消息不绑定到任何字段。如何在用户名字段中显示此错误消息?
如果您将 FOSUserBundle 设置为包的父级:
// src/Acme/UserBundle/AcmeUserBundle.php
<?php
namespace Acme\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeUserBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
然后你可以将自己的validation.yml文件放在config文件夹中,你可以像这样设置唯一约束的errorPath属性:
#validation.yml:
Acme\DemoBundle\Entity\User: # your user entity
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields: usernameCanonical, errorPath: username, groups: [CustomRegistration, Default] }
确保将 errorPath 设置为表单上的实际字段名称。
【讨论】: