symfony2覆盖模型验证

symfony2覆盖模型验证,symfony,fosuserbundle,Symfony,Fosuserbundle,我正在使用FOS用户包,我想覆盖验证文件FOS/UserBundle/Resources/config/validaiton.xml: <constraint name="FOS\UserBundle\Validator\Unique"> <option name="property">usernameCanonical</option> <option name="message">fos_user.username.alread

我正在使用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>


用户名规范
fos\u user.username.已使用
轮廓
用户名不在我的注册表中(我只是将其设置为隐藏),因此验证不应产生任何错误


也许有更好的方法删除表单的用户名…

您可以将实体验证信息放入任何
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

您可以将实体验证信息放入任何
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

要以正确的方式删除表单的用户名字段,您应该覆盖
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扩展它

<?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.

    }
}

sry,这不起作用。它仍然要求输入用户名。所以我认为验证仍然有效。sry,这不起作用。它仍然要求输入用户名。因此,我认为验证仍在进行中。