【问题标题】:Symfony2 User entity not picking up custom validator classSymfony2 用户实体没有选择自定义验证器类
【发布时间】:2012-04-01 18:44:09
【问题描述】:

我有一个自定义密码验证器,有人在回复another question 时给了我这个验证器。验证器如下所示:

<?php
namespace Symfony\Component\Validator\Constraints;

use Symfony\Component\Validator\ConstraintValidator,
    Symfony\Component\Validator\Constraint,
    Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface,
    Symfony\Component\Security\Core\SecurityContextInterface,
    JMS\DiExtraBundle\Annotation\Validator,
    JMS\DiExtraBundle\Annotation\InjectParams,
    JMS\DiExtraBundle\Annotation\Inject;

/**
 * @Validator("user.validator.current_password")
 */
class CurrentPasswordValidator extends ConstraintValidator
{
  // ...
}

我尝试使用这个验证器的地方是在我的User 实体中,如下所示:

<?php

namespace VNN\PressboxBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinTable as JoinTable;
use Doctrine\ORM\Mapping\JoinColumn as JoinColumn;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\MaxLength;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\CurrentPassword;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * VNN\PressboxBundle\Entity\User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User implements UserInterface, \Serializable
{
    public static function loadValidatorMetadata(ClassMetadata $metadata)
    {
        $metadata->addPropertyConstraint('current_password', new CurrentPassword());
    }
}

(当然,为了清楚起见,我省略了一些代码。)

我遇到的问题是我的验证器类没有被识别:

致命错误:在第 438 行的 /home/jason/pressbox/src/VNN/PressboxBundle/Entity/User.php 中找不到类“Symfony\Component\Validator\Constraints\CurrentPassword”

为什么会发生这种情况?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    您必须自己编写约束。 Symfony2 不附带它。

    【讨论】:

    • 好的。我不知道该怎么做,对不起。我该怎么做?
    • 好的,谢谢你用勺子喂我这一切。 $metadata-&gt;addPropertyConstraint('current_password', new CurrentPassword()); 是添加约束的正确方法吗?我仍然遇到同样的错误。
    • 我不知道,因为我使用注释。另外,我认为,您应该继续讨论原始答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多