我试图覆盖FOSUserBundle的重置控制器。我自己的UserBundle覆盖整个捆绑包,并且它可以正常工作,例如模板,但它是我第一次尝试覆盖控制器,似乎我做错了什么。
以这种方式尝试(仅在第一行复制,因为控制器的其余部分仍然是默认控制器):
namespace UserBundle\Controller\User;
use FOS\UserBundle\Controller\ResettingController as BaseController;
...
class ResettingController extends BaseController{
...
"重置密码"按钮位于我的登录页面上。
我想要实现的是 checkEmailAction 的一些自定义。我想检查一下请求密码重置的人是否已被锁定"用户与否,并发送正确的响应消息"对于每个请求。控制器的其余部分可以保持不变。 我添加了一些转储和一个" die;"在代码中检查是否有任何输出但没有输出。
我最好从哪里开始寻找?根据文件https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html,我不应该比我已经做的更多。
答案 0 :(得分:4)
我的解决方案: 我的错误在routing.yml文件中。我第一次:
fos_user_resetting_reset: path: /resetting/request defaults: { _controller: UserBundle:Resetting:request }
但我实际上并不想覆盖请求方法,而且名称Fos_user_resetteing_reset与请求不匹配。
所以我的最终解决方案:
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 }
这样我只会覆盖这两种方法,其余的Resetting控制器仍然会选择默认值。 :)
答案 1 :(得分:0)
从
修复命名空间namespace UserBundle\Controller\User;
到
namespace UserBundle\Controller;