symfony – FOSUser Bundle ..重写表单类型时无法加载类型“X”
发布时间:2020-12-14 23:21:38 所属栏目:资源 来源:网络整理
导读:我以为我非常仔细地遵循了文档,但由于某种原因,我收到此错误消息.. 无法加载“sam_user_registration”类型 // src / Sam / Bundle / UserBundle / Entity / User.php namespace SamBundleUserBundleEntity;use DoctrineORMMapping as ORM;use FOSUser
我以为我非常仔细地遵循了文档,但由于某种原因,我收到此错误消息..
无法加载“sam_user_registration”类型 // src / Sam / Bundle / UserBundle / Entity / User.php namespace SamBundleUserBundleEntity; use DoctrineORMMapping as ORM; use FOSUserBundleEntityUser as BaseUser; use SymfonyComponentValidatorConstraints as Assert; /** * @ORMEntity * @ORMTable(name="sam_user") */ class User extends BaseUser { /** * @var string $id * * @ORMId * @ORMColumn(name="id",type="integer") * @ORMGeneratedValue(strategy="AUTO") */ protected $id; /** * Get id * * @return string $id */ public function getId() { return $this->id; } /** * @ORMColumn(type="string",length=255) * * @AssertNotBlank(message="Please enter your name.",groups={"Registration","Profile"}) * @AssertMinLength(limit="3",message="The name is too short.","Profile"}) * @AssertMaxLength(limit="255",message="The name is too long.","Profile"}) */ protected $name; // src / Sam / Bundle / UserBundle / Form / Type / RegistrationFormType.php <?php namespace SamBundleUserBundleFormType; use SymfonyComponentFormFormBuilderInterface; use FOSUserBundleFormTypeRegistrationFormType as BaseType; class RegistrationFormType extends BaseType { public function buildForm(FormBuilderInterface $builder,array $options) { parent::buildForm($builder,$options); // add your custom field $builder->add('name'); } public function getName() { return 'sam_user_registration'; } } ** src / Sam / Bundle / UserBundle / Resources / config / services.xml ** <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <service id="sam_user.registration.form.type" class="SamBundleUserBundleFormTypeRegistrationFormType"> <tag name="form.type" alias="sam_user_registration" /> <argument>%fos_user.model.user.class%</argument> </service> </container> #app / config / config.yml fos_user: db_driver: orm # other valid values are 'mongodb','couchdb' and 'propel' firewall_name: main #user_class: SamBundleUserBundleDocumentUser user_class: SamBundleUserBundleEntityUser group: group_class: SamBundleUserBundleEntityGroup profile: # Authentication Form form: type: fos_user_profile name: fos_user_profile_form validation_groups: [Authentication] registration: form: type: sam_user_registration 解决方法
首先,您的用户类缺少其构造函数.由于您继承了BaseUser,因此您也必须调用父构造函数.所以…
public function __construct() { parent::__construct(); //your code } 其次,您不需要覆盖表单类型.由于您已将名称字段添加到您的实体,因此它将自动通过您的表单提供 {{ form_widget(myForm.name)} } -> FosUserBundle Doc 但是,您确定在config.yml中导入了services.xml吗?为什么要混合使用xml和yml?坚持一个. imports: - { resource: @SamBundleUserBundle/Resources/config/services.yml } 在评论中,Patt指出了我们的overriding registration FOSUserBundle Symfony2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |