我正在尝试覆盖FOSUserBundle的某些部分。
我必须自定义ProfileController(尤其是showAction)。我寻找解决方案,发现必须在UserBundle中创建一个新的ProfileController,并继承原始的FOSUserBundle ProfileController。
这就是我所做的。
use FOS\UserBundle\Controller\ProfileController as BaseController;
class ProfileController extends BaseController
我还知道如何通过在自己的UserBundle中创建相同名称的文件来覆盖嫩枝视图。
我的问题是,我不知道如何使用我的ProfileController而不是原始的来制作Symfony。
我是否必须在App / Config / routing.yml中更改路由?
还是只是在我的UserBundle中创建一个.xml路由文件,然后将其导入App / Config / routing.yml?
我首先犯了自定义FOSUserBundle文件的错误,但是我知道这不是正确的方法,这就是为什么我现在尝试进行干净的更改。
答案 0 :(得分:1)
ProfileController
已注册为名为fos_user.profile.controller
的服务,如您在this配置文件中所见。
为了覆盖控制器/服务(对于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
的服务。