gpt4 book ai didi

symfony - 如何覆盖注册表 FosUser 和选择字段填充角色 SYMFONY2

转载 作者:行者123 更新时间:2023-12-02 15:07:42 25 4
gpt4 key购买 nike

我按照文档覆盖了 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 的选择,当我提交表单时我收到此错误

Catchable Fatal Error: Argument 1 passed to FOS\UserBundle\Model\User::setRoles() must be an array, string given, called in /var/www/blog/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 346 and defined in /var/www/blog/vendor/bundles/FOS/UserBundle/Model/User.php line 709

任何帮助将不胜感激,谢谢。顺便说一句,很抱歉我无法添加其他标签:P

最佳答案

我认为你的问题是因为你使用的是ChoiceField。 ChoiceField 将仅返回一个角色(字符串类型,角色的 ID),但方法 setRoles 需要一个数组。这意味着您需要添加选项 multiple => true 或更改为其他类型的字段,例如 Collection 字段。使用 multiple 将返回一个数组,该数组将被 setRoles 接受,使用 Collection 字段也将返回一个数组。

底线,您需要选择一个返回数组而不是单个结果(字符串)的表单字段。您可以查看所有表单类型here

希望这有帮助。

关于symfony - 如何覆盖注册表 FosUser 和选择字段填充角色 SYMFONY2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com