我知道这个问题是非常普遍的,我冲浪这个问题的解决方案,但我没有罚款。我尝试覆盖FOSUserBundle (添加名称字段)中的表单类型,并遵循以下文档:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.3.x/Resources/doc/overriding_forms.md,我得到一个错误:“无法加载类型"acme_user_registration”。我的实体用户:
//src/MyBlogBundle/UserBundle/Entity/User.php
namespace MyBlogBundle\UserBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=50)
* @Assert\NotBlank(message="Please enter your name.", groups= {"Registration", "Profile"})
* @Assert\Length(min=3,max=50, minMessage="The name is too short.",
* maxMessage = "Your first name cannot be longer than {{ limit }} characters long",
* groups={"Registration", "Profile"})
*/
protected $name;
public function __construct()
{
parent::__construct();
}
}
我的FormType:
// src/MyBlogBundle/UserBundle/Form/Type/RegistrationFormType.php
namespace MyBlogBundle\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('name');
}
public function getName()
{
return 'acme_user_registration';
}
}
配置表单类型:
# src/MyBlogBundle/UserBundle/Resources/config/services.yml
services:
acme_user.registration.form.type:
class: MyBlogBundle\UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: acme_user_registration }
和app/config/config.yml:
fos_user:
db_driver: orm
firewall_name: main
user_class: MyBlogBundle\UserBundle\Entity\User
registration:
form:
type: acme_user_registration
有谁能给我一个提示,我做错了什么?
发布于 2015-04-01 23:58:56
将配置从src/MyBlogBundle/UserBundle/Resources/config/services.yml转移到src/MyBlogBundle//Resources/config/services.yml,并将Set和Get方法添加到用户实体-它解决了我的问题。
https://stackoverflow.com/questions/29062308
复制相似问题