Как переопределить FOSUserBundle ProfileController в Symfony 3? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь переопределить некоторые части FOSUserBundle.

Я должен настроить ProfileController (особенно showAction). Я искал решение и обнаружил, что мне нужно создать новый ProfileController в моем UserBundle, и он наследует исходный FOSUserBundle ProfileController.

Это то, что я сделал.

use FOS\UserBundle\Controller\ProfileController as BaseController;

class ProfileController extends BaseController

Я также знаю, как переопределить виды веток, создавая файлы с одинаковыми именами в моей собственной UserBundle.

Моя проблема в том, что я не знаю, как заставить Symfony использовать мой ProfileController вместо оригинального.

Нужно ли менять маршруты в App / Config / routing.yml?

Или просто создайте файл маршрутизации .xml в моем UserBundle, а затем импортируйте его в App / Config / routing.yml?

Сначала я сделал ошибку при настройке файлов FOSUserBundle, но я знаю, что это был неправильный путь, поэтому сейчас я пытаюсь сделать чистые изменения.

1 Ответ

0 голосов
/ 07 ноября 2018

ProfileController зарегистрирован как сервис с именем fos_user.profile.controller, как вы можете видеть в этом файле конфигурации.

Чтобы переопределить контроллер / службу (для Symfony 3.4), вам необходимо переопределить эту службу в вашем app/config/services.yml:

services:
  # [..]
  'fos_user.profile.controller':
    class: 'Your\Namespace\ProfileController'
    public: true
    arguments:
      - '@event_dispatcher'
      - '@fos_user.profile.form.factory'
      - '@fos_user.user_manager'
    calls:
      - [ 'setContainer', [ '@service_container' ]]

Теперь очистите кеш. Затем Symfony будет использовать ваш класс ProfileController в качестве службы с именем fos_user.profile.controller.

...