我正在使用FOS用户包,我想覆盖验证文件FOS / UserBundle / Resources / config / validaiton.xml:
<constraint name="FOS\UserBundle\Validator\Unique">
<option name="property">usernameCanonical</option>
<option name="message">fos_user.username.already_used</option>
<option name="groups">
<!-- <value>Registration</value> -->
<value>Profile</value>
</option>
</constraint>
用户名不在我的注册表单中(我只是将其设置为隐藏),即验证不应产生任何错误...
也许有更好的方法可以删除表单的用户名...
答案 0 :(得分:2)
要以正确的方式删除表单的用户名字段,您应该覆盖RegistrationFormType
,创建自己的字段并从原始FOSUserBundle扩展
<?php
namespace Acme\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('email', 'email')
->add('plainPassword', 'repeated', array('type' => 'password'))
// your other custom fields, if any.
}
}
现在,您应该将覆盖的表单声明为服务,然后告诉FOSUserBundle配置文件您现在使用的是覆盖的表单。 Here is the complete documentation
答案 1 :(得分:1)
您可以将实体验证信息放在任何validation.yml
文件中。所以你可以做到
#validation.yml
FQCN\Of\User\Entity:
constraints:
- FOS\UserBundle\Validator\Unique:
property: usernameCanonical
groups: [Profile]
message: fos_user.username.already_used
properties:
# property validations here