Symfony2 FOSUser自定义验证不起作用

第三名

我正在使用Symfony 2.8和FOSUser bundle 2.0进行用户管理。我正在尝试为电话号码字段创建自定义验证程序,但没有成功。

这是我的代码:

UserBundle / Resources / config / validation.xml

<class name="Acme\UserBundle\Entity\User">
   <property name="phoneNumber">
        <constraint name="Acme\UserBundle\Validator\Constraint\IsConfirmedPhonenumber">
             <option name="groups">
                     <value>Acme</value>
              </option>
         </constraint>
    </property>
 </class>

服务定义

<service class="Acme\UserBundle\Validator\Constraint\IsConfirmedPhonenumberValidator" id="acme_user.validator.is_confirmed_phonenumber_validator">
    <argument id="doctrine.orm.default_entity_manager" type="service"/>
    <tag name="acme.constraint_phonenumber"/>
 </service>

在我的表单上

public function configureOptions(OptionsResolver $resolver)
{
     $resolver->setDefaults(array(
        'data_class' => 'Acme\UserBundle\Entity\User',
        'intention'  => 'profile',
    ));
}

我的自定义约束

class IsConfirmedPhonenumber extends Constraint
{
    public $message = 'The phonenumber "%phonenumber%" is not verified.';

    public function validatedBy()
    {
        return "acme.constraint_phonenumber";
    }
}

和验证器

class IsConfirmedPhonenumberValidator extends ConstraintValidator
{

    /**
     * @var EntityManager
     */
    private $em;

    public function __construct(EntityManager $em)
    {
        $this->em = $em;
    }

    /**
     * Checks if the passed value is valid.
     *
     * @param mixed $value The value that should be validated
     * @param Constraint $constraint The constraint for the validation
     */
    public function validate($value, Constraint $constraint)
    {
        $phoneVerificationRepo = $this->em->getRepository('AcmeCoreBundle:PhoneVerification');

        $phoneVerificationRepo->findBy(array('phoneNumber' => $value, 'verified' => true));

        if(!$phoneVerificationRepo)
        {
            $this->context->buildViolation($constraint->message)
                ->setParameter('%phonenumber%', $value)
                ->addViolation();
        }

        return;
    }
} 

此配置对我不起作用,因为我的自定义验证程序中的validate方法永远不会被调用。

第三名

我设法通过在ProfileController的editAction方法的createForm工厂方法中指定验证组来解决此问题。

$form = $formFactory->createForm(['validation_groups' => array('AcmeProfile', 'Profile')]);

由于我要覆盖FOS工厂和ProfileController editAction,因此在config或自定义FormType中设置验证组也无济于事。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

yii2自定义验证不起作用

来自分类Dev

Symfony2自定义安全投票器不起作用

来自分类Dev

Symfony2自定义安全投票器不起作用

来自分类Dev

symfony2自定义验证器FatalErrorException

来自分类Dev

Http在Angular 2自定义异步验证中不起作用

来自分类Dev

自定义验证消息在Yii2中不起作用

来自分类Dev

自定义验证在yii2中不起作用

来自分类Dev

自定义验证消息在Yii2中不起作用

来自分类Dev

Yii2 中 DynamicFormWidget 的自定义验证不起作用

来自分类Dev

Angular 2 - 自定义表单验证器不起作用

来自分类Dev

Symfony2 notIn不起作用

来自分类Dev

Symfony2自定义按钮

来自分类Dev

Symfony2自定义按钮

来自分类Dev

自定义Symfony2表单

来自分类Dev

Symfony自定义类自动加载不起作用

来自分类Dev

Symfony2:递归验证

来自分类Dev

Symfony 2中的自定义存储库类不起作用

来自分类Dev

Symfony2 Asset GreaterThan不起作用

来自分类Dev

DATEDIFF在Symfony2中不起作用

来自分类Dev

symfony2不起作用全新安装

来自分类Dev

翻译在Symfony2中不起作用

来自分类Dev

symfony2(主义)货币约束不起作用

来自分类Dev

Symfony2实体克隆不起作用

来自分类Dev

Symfony2 postUpdate侦听器不起作用

来自分类Dev

在类上的Symfony2 Route注释不起作用

来自分类Dev

Symfony2 FOSRestBundle handleView()不起作用

来自分类Dev

getDoctrine()在FOSUserBundle symfony2中不起作用

来自分类Dev

Symfony2实体克隆不起作用

来自分类Dev

Symfony2动态路由器不起作用