如何使用构造函数将角色添加到组中



我曾尝试在每个组创建时为其设置角色。我认为使用__constructor是个好主意,但它不起作用,ROLE_ADMIN不在新的组中。我不知道我做错了什么。

<?php
// src/AppBundle/Entity/Group.php
namespace AppBundleEntity;
use FOSUserBundleModelGroup as BaseGroup;
use DoctrineORMMapping as ORM;
use SymfonyComponentValidatorConstraints as Assert;
/**
* @ORMEntity(repositoryClass="AppBundleRepositoryGroupRepository")
* @ORMTable(name="d0s_groups")
*/
class Group extends BaseGroup
{
/**
* @ORMColumn(type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @AssertNotBlank(
*     message="Nazwa grupy nie może być pusta."
* )
* @AssertLength(
*      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();
}
}

文档说它最好:

只有当使用new关键字构造新实例时,才会调用实体的构造函数。条令从不调用实体构造函数,因此您可以随意使用它们,甚至需要任何类型的参数。

来源:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/architecture.html

因此,本质上,除非您实际将角色存储在数据库中,否则当从数据库加载对象时,您的构造函数是不相关的。有一些方法可以解决这个问题,您可以覆盖getRoles方法,在那里添加额外的角色。

相关内容

  • 没有找到相关文章

最新更新