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我不应该比我已经做的更多。
我的解决方案:我的错误是在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)
这样我只覆盖了这两种方法,而重置控制器的其余部分仍然采用默认方法。:)