Symfony:覆盖FOSUserBundle重置控制器

时间:2018-01-02 18:12:08

标签: symfony controller override fosuserbundle reset-password

我试图覆盖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,我不应该比我已经做的更多。

2 个答案:

答案 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;