我已经尝试在每个小组创建时为每个小组设置角色。我以为使用__constructor是个好主意,但这不起作用,ROLE_ADMIN不在新的组中。我不知道我在做什么错。
<?php
// src/AppBundle/Entity/Group.php
namespace AppBundle\Entity;
use FOS\UserBundle\Model\Group as BaseGroup;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\GroupRepository")
* @ORM\Table(name="d0s_groups")
*/
class Group extends BaseGroup
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Assert\NotBlank(
* message="Nazwa grupy nie może być pusta."
* )
* @Assert\Length(
* min = 3,
* max = 32,
* minMessage = "Nazwa grupy musi mieć conajmniej 3 znaki.",
* maxMessage = "Nazwa grupy może mieć maksymalnie 32 znaki."
* )
*/
protected $name;
public function __construct($name, $roles = array())
{
parent::__construct($name, $roles);
$this->addRole("ROLE_ADMIN");
}
public function getId() {
return $this->id;
}
public function __toString()
{
return $this->getName();
}
}
文档说得最好:
仅当you用
new
关键字构造新实例时才调用实体的构造函数。主义从不调用实体构造函数,因此您可以随意使用它们,甚至可以要求任何类型的参数。
来源:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/architecture.html
因此,基本上,除非您实际上store数据库中的角色,否则从db加载对象时,构造函数是无关紧要的。有多种解决方法,您可以覆盖getRoles
方法以在其中添加其他角色。