Symfony:覆盖 FOSUserBundle 重置控制器

son*_*nja 1 overriding controller reset-password symfony fosuserbundle

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

以这种方式尝试(仅在第一行中复制,因为控制器的其余部分仍然是默认的):

namespace UserBundle\Controller\User;

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


class ResettingController extends BaseController{
...
Run Code Online (Sandbox Code Playgroud)

“重置密码”按钮位于我的登录页面上。

我想要实现的是checkEmailAction 的一些自定义。我想检查请求重置密码的人是否是“锁定”用户,并为每个请求发送正确的“响应消息”。控制器的其余部分可以保持不变。我添加了一些转储和一个“死”;进入代码检查是否有任何输出,但没有。

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

son*_*nja 6

我的解决方案:我的错误是在routing.yml 文件中。我首先有:

fos_user_resetting_reset: path: /resetting/request defaults: { _controller: UserBundle:Resetting:request }
Run Code Online (Sandbox Code Playgroud)

但我从来没有真正想覆盖 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 }
Run Code Online (Sandbox Code Playgroud)

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