为了账号安全,请及时绑定邮箱和手机立即绑定

Symfony EventSubscriber 使用 KernelEvents

Symfony EventSubscriber 使用 KernelEvents

PHP
慕哥9229398 2023-10-01 16:08:17
所以我正在学习创建 API 的基础。我正在尝试使用 API 来创建新用户,但是我需要使用 symfony 来哈希密码。我创建了一个 PasswordEncoderSubscriber 方法,该方法在将密码插入数据库之前对密码进行哈希处理。private $encoder;public function __construct(PasswordEncoderInterface $encoder){    $this->encoder = $encoder;}public static function getSubscribedEvents(){    return [        KernelEvents::VIEW => ['encodePassword' => EventPriorities::PRE_WRITE]    ];}public function encodePassword(ViewEvent $event){    $result = $event->getControllerResult();    $method = $event->getRequest()->getMethod();    if ($result instanceof User && $method === "POST") {        $hash = $this->encoder->encodePassword($result, $result->getPassword());        $result->setPassword($hash);    }}我使用来KernelEvents::View调用该函数,encodePassword然后再使用EventPriorities::PRE_WRITE.这是我得到的错误:注意:未定义的偏移量:0。KernelEvents::VIEW我忘记了什么吗?之后代码就中断了?
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

根据symfony 手册,您应该提供处理程序,并且它的优先级为包含 2 个项目的数组:

return [

    KernelEvents::EXCEPTION => [

        ['processException', 10],

    ],

];

所以,你的代码应该是:


public static function getSubscribedEvents()

{

    return [

        KernelEvents::VIEW => [

            ['encodePassword', EventPriorities::PRE_WRITE],

        ]

    ];

}


查看完整回答
反对 回复 2023-10-01
  • 1 回答
  • 0 关注
  • 48 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信