我按照文档覆盖了 FosUser 的注册表单,并像这样显示我想要的角色。这是我的注册表。
<?php
namespace My\BlogBundle\Form;
use My\BlogBundle\Entity\User;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class MyRegisterType extends BaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder ,$options);
$user = new User();
$builder
->add('roles' ,'choice' ,array('choices'=>$user->getRoles() ) ;
}
public function getName()
{
return 'my_register_type';
}
}
这是我的用户实体。
<?php
namespace My\BlogBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* My\BlogBundle\Entity\User
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="My\BlogBundle\Entity\UserRepository")
*/
class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
protected $roles=array();
/**
*@ORM\OneToMany(targetEntity="Article" ,mappedBy="user")
*/
protected $article;
/**
*@ORM\OneToMany(targetEntity="Comment" ,mappedBy="user")
*/
protected $comment;
public function __construct()
{
parent::__construct();
$this->roles=array('searcher' ,'annoucer');
}
}
我现在的问题是我不知道如何仅在该字段上显示我添加的角色,因为我还获得了 ROLE_USER 选项,并且当我提交表单时出现此错误
可捕获的致命错误:传递给 FOS\UserBundle\Model\User::setRoles() 的参数 1 必须是一个数组,给定字符串,在 /var/www/blog/vendor/symfony/src/Symfony/Component/Form/Util 中调用/PropertyPath.php 在第 346 行并在 /var/www/blog/vendor/bundles/FOS/UserBundle/Model/User.php 第 709 行中定义
任何帮助将不胜感激,谢谢。顺便说一句,很抱歉我无法添加其他标签:P