首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单恢复密码表

简单恢复密码表
EN

Stack Overflow用户
提问于 2013-12-28 19:00:02
回答 1查看 1.5K关注 0票数 0

同样,我尝试了一个简单的恢复表单忘记了用户密码。

该表单仅包含电子邮件输入。表单处理程序,接收电子邮件,搜索用户,恢复您的密码,并发送带有新密码的电子邮件。重要的是说用户没有被认证。

因此,我需要创建一个自定义约束,以检查电子邮件是否存在于db中。我有一种自己的服务方法。因此,我需要用约束绑定方法。

自定义验证类是:

代码语言:javascript
运行
复制
class ExistEmailValidator extends ConstraintValidator
{

    protected $userService;

    public function setUserService($userService)
    {
        echo "Setter...";
        var_dump($userService);
        die();
        $this->userService = $userService;
    }

    public function validate($value, Constraint $constraint)
    {
        if($this->userService->existUserEmail($value) == false){
            $this->context->addViolation($constraint->message, array('%string%' => $value));
        }

    }
}

我从services.yml注入服务:

代码语言:javascript
运行
复制
  validator.unique.ExistEmailValidator:
      class: AppsManantiales\CommonBundle\Validator\Constraints\ExistEmailValidator
      tags:
          - {name: validator.constraint_validator, alias: user_email_validator}
      calls:
          - [setUserService, ["userservice"]]

问题是,不要注入服务,因为Symfony说:

错误:调用非对象上的成员函数existUserEmail()

注意:用户服务id是:"userservice“。

代码语言:javascript
运行
复制
php app/console container:debug | grep UserService
userservice container AppsManantiales\CommonBundle\Services\UserService

有什么想法吗?

更新1

我的约束类是:

代码语言:javascript
运行
复制
class ExistEmail extends Constraint{

    public $message = 'El e-mail "%string%" no pertenece a ningun usuario del sistema.';

    public function validatedBy()
    {
        return get_class($this).'Validator';
    }
}

表格的定义是:

代码语言:javascript
运行
复制
public function buildForm(FormBuilderInterface $builder, array $options) {

    $builder->add('anUserEmail', 'email',
            array(
                'constraints' => array(
                    new ExistEmail()
                )
            ));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 19:14:48

替换,

代码语言:javascript
运行
复制
public function validatedBy()
{
    return get_class($this).'Validator';
}   

ExistEmail约束类中,

代码语言:javascript
运行
复制
public function validatedBy()
{
    return 'user_email_validator';
}

为了将约束映射到正确的ExistEmailValidator实例(在服务容器中实例化的实例)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20818194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档