所以我正在学习创建 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],
]
];
}
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消