我正在尝试为我的新应用程序设置 FOSUserBundle,因此我想覆盖默认的 FOSUser 表单。如 FOSUser 文档中所述,在适当设置 app/config.yml 之前,我必须将新表单定义为服务。我的问题是为什么我不能像这样设置 config.yml:
fos_user:
db_driver: orm
firewall_name: admin_area
user_class: abc\abcBundle\Entity\User
registration:
form:
type: abc\abcBundle\Form\Type\UserType
在我上一个应用程序中,我使用了 FOSUserBundle 和 PUGXMUltiUserBundle,然后我的 PUGXM(完美工作)配置是:
users:
agents:
entity:
class: abc\NikBundle\Entity\agents
registration:
form:
type: abc\NikBundle\Form\Type\UserType
name: agent_user_registration_form
template: abcNikBundle:ManageUsers:newUser.html.twig
所以我想这也可以用 FOSUserBundle 来完成。这是不可能的吗?如果是,为什么?
最佳答案
FOSUserBundle 允许您按照下面文档中的描述覆盖它的 Controller
该文档实际上向您展示了如何覆盖注册 Controller ,并从那里简单地注入(inject)您的自定义表单以进行验证,就像在任何普通 Controller 中一样。
您还可以通过在“{ROOT_DIR}/vendor/friendsofsymfony/user-bundle/Resources/views”下找到原始 FOSUserBundle 模板并将它们复制到“{ROOT_DIR}/app/Resources/FOSUserBundle/views”来覆盖模板.
https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_templates.md
应该是这样的
Resources
└── FOSUserBundle
└── views
├── ChangePassword
│ ├── changePassword.html.twig
│ └── changePassword_content.html.twig
├── Registration
│ ├── confirmed.html.twig
│ ├── register.html.twig
│ └── register_fail.html.twig
├── Resetting
│ ├── checkEmail.html.twig
│ ├── email.txt.twig
│ ├── passwordAlreadyRequested.html.twig
│ ├── request.html.twig
│ ├── request_content.html.twig
│ ├── reset.html.twig
│ └── reset_content.html.twig
├── Security
│ └── login.html.twig
└── layout.html.twig
关于php - Symfony 2 FOSUserBundle : Override form without defining service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112644/