我想覆盖一些FOSUserBundle表单(注册表单)所以我按照文档操作,我无法理解为什么我会一直收到同样的错误:
尝试加载类" RegistrationFormType"从命名空间 " OC \ UserBundle \表格\类型&#34 ;.你忘记了"使用"声明 " FOS \ UserBundle \表格\型号\ RegistrationFormType&#34 ;? 500内部服务器错误 - ClassNotFoundException。
这些是我的文件:
RegistrationFormType.php:
<?php
namespace OC\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('telephone');
}
public function getName()
{
return 'oc_user_registration';
}
}
OCUserBundle的Service.yml:
services:
oc_user_registration:
class: OC\UserBundle\Form\Type\RegistrationFormType
tags:
- {name: form.type, alias: oc_user_registration}
当我尝试在app / Ressources / config.yml中注册时,我将项目配置为使用我的表单类型:
fos_user:
db_driver: orm
firewall_name: main
user_class: OC\UserBundle\Entity\User
registration:
form:
type: oc_user_registration
请有人告诉我这里有什么问题吗?
答案 0 :(得分:2)
解决了这个问题。错误是指向FormType文件的路径的路径与命名空间不同。无论如何,谢谢你。
答案 1 :(得分:0)
您看到https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md
一切都是解释,我已经使用并且没问题
答案 2 :(得分:0)
将他的功能添加到您的注册表单类型
public function getParent() { 返回&#39; fos_user_registration&#39 ;; }