Symfony EventSubscriber 使用 KernelEvents

所以我正在学习创建 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我忘记了什么吗?之后代码就中断了?


慕哥9229398
浏览 52回答 1
1回答

四季花海

根据symfony 手册,您应该提供处理程序,并且它的优先级为包含 2 个项目的数组:return [    KernelEvents::EXCEPTION => [        ['processException', 10],    ],];所以,你的代码应该是:public static function getSubscribedEvents(){    return [        KernelEvents::VIEW => [            ['encodePassword', EventPriorities::PRE_WRITE],        ]    ];}
打开App,查看更多内容
随时随地看视频慕课网APP