Symfony:覆盖 FOSUserBundle 重置控制器

Symfony: Override FOSUserBundle Resetting Controller

我正在尝试覆盖 FOSUserBundle 的重置控制器。我自己的 UserBundle 覆盖了整个包,并且它工作正常,例如模板,但这是我第一次尝试覆盖控制器,看起来我做错了什么。

这样尝试(只在第一行复制,因为控制器的其余部分仍然是默认的):

namespace UserBundle\Controller\User;

use FOS\UserBundle\Controller\ResettingController as BaseController;
...


class ResettingController extends BaseController{
...

"Reset Password" 按钮位于我的登录页面上。

我想要实现的是 checkEmailAction 的一些自定义。我想检查请求重设密码的人是否是 "locked" 用户,并为每个请求发送正确的 "Response Message"。控制器的其余部分可以保持不变。 我在代码中添加了一些转储和 "die;" 以检查是否有任何输出但有 none。

我最好从哪里开始寻找?根据文档 https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html 我不应该比我已经做的更多。

修复来自

的命名空间
namespace UserBundle\Controller\User;

namespace UserBundle\Controller;

我的解决方法: 我的错误在 routing.yml 文件中。我第一次有:

fos_user_resetting_reset: path: /resetting/request defaults: { _controller: UserBundle:Resetting:request }

但我从来没有真正想覆盖请求方法,而且名称 Fos_user_resetteing_reset 与 request 不匹配。

所以我的最终解决方案:

fos_user_resetting_send_email:
    path: /resetting/send-email
    defaults: { _controller: UserBundle:User\Resetting:sendEmail }
fos_user_resetting_check_email:
    path: /resetting/check-email
    defaults: { _controller: UserBundle:User\Resetting:checkEmail }

这样我只是覆盖了这两种方法,重置控制器的其余部分仍然采用默认方法。 :)