如何在Symfony 3中覆盖FOSUserBundle的ProfileController?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Symfony 3中覆盖FOSUserBundle的ProfileController?相关的知识,希望对你有一定的参考价值。
我试图覆盖FOSUserBundle的某些部分。
我必须自定义ProfileController(尤其是showAction)。我找了一个解决方案,发现我必须在UserBundle中创建一个新的ProfileController,并继承原始的FOSUserBundle ProfileController。
这就是我所做的。
use FOSUserBundleControllerProfileController as BaseController;
class ProfileController extends BaseController
我也知道如何通过在我自己的UserBundle中创建相同的名称文件来覆盖twig视图。
我的问题是,我不知道如何使用我的ProfileController而不是原始的Symfony。
我是否必须在App / Config / routing.yml中更改路由?
或者只是在我的UserBundle中创建一个.xml路由文件,然后在App / Config / routing.yml中导入它?
我首先犯了定制FOSUserBundle文件的错误,但我知道这不是正确的方法,这就是为什么我现在正在尝试进行干净的更改。
ProfileController
注册为名为fos_user.profile.controller
的服务,您可以在this配置文件中看到。
为了覆盖控制器/服务(对于Symfony 3.4),您需要在app/config/services.yml
中重新定义此服务:
services:
# [..]
'fos_user.profile.controller':
class: 'YourNamespaceProfileController'
public: true
arguments:
- '@event_dispatcher'
- '@fos_user.profile.form.factory'
- '@fos_user.user_manager'
calls:
- [ 'setContainer', [ '@service_container' ]]
现在清除缓存。然后,Symfony将使用您的ProfileController类作为名为fos_user.profile.controller
的服务。
以上是关于如何在Symfony 3中覆盖FOSUserBundle的ProfileController?的主要内容,如果未能解决你的问题,请参考以下文章
无法解析 symfony 4.3 中覆盖 FOS 控制器的参数 $token
在 Symfony 4.4 中覆盖复选框表单字段产生重复标签且没有字段