Symfony: переопределить сброс контроллера FOSUserBundle
Я пытаюсь переопределить сброс контроллера FOSUserBundle. Мой собственный UserBundle переопределяет весь пакет, и он отлично работает, например, для шаблонов, но я впервые пытаюсь переопределить контроллер, и кажется, что я делаю что-то не так.
Попытка сделать это таким образом (только копирование в первой строке, поскольку остальная часть контроллера по-прежнему используется по умолчанию):
namespace UserBundle\Controller\User;
use FOS\UserBundle\Controller\ResettingController as BaseController;
...
class ResettingController extends BaseController{
...
Кнопка "Сбросить пароль" находится на моей странице входа.
То, что я пытаюсь достичь, это некоторые настройки для checkEmailAction. Я хочу проверить, является ли человек, который запрашивает сброс пароля, "заблокированным" пользователем или нет, а также отправить правильное "ответное сообщение" для каждого запроса. Остальная часть контроллера может остаться прежней. Я добавил несколько дампов и "умереть"; в код, чтобы проверить, есть ли какой-либо вывод, но его нет.
Где мне лучше начать искать? Согласно документации https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html мне не нужно быть больше, чем я уже делаю.
2 ответа
Мое решение: моя ошибка была в файле 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 }
таким образом, я переопределяю только эти два метода, а остальная часть контроллера сброса по-прежнему выбирает стандартный.:)
Исправить пространство имен от
namespace UserBundle\Controller\User;
в
namespace UserBundle\Controller;