Php 如何使用构造函数向组中添加角色
我一直试图在每个团队创建时为他们设置角色。我认为使用_构造函数将是一个好主意,但它不起作用,角色_ADMIN不在新的组中。我不知道我做错了什么Php 如何使用构造函数向组中添加角色,php,symfony,fosuserbundle,roles,usergroups,Php,Symfony,Fosuserbundle,Roles,Usergroups,我一直试图在每个团队创建时为他们设置角色。我认为使用_构造函数将是一个好主意,但它不起作用,角色_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\Valida
<?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();
}
}
文档最好地说明了:
只有当您使用new
关键字构造新实例时,才会调用实体的构造函数。条令从不调用实体构造函数,因此您可以随意使用它们,甚至让它需要任何类型的参数
资料来源:
因此,从本质上讲,除非您实际将角色存储在数据库中,否则从db加载对象时,构造函数是不相关的。有很多方法可以解决这个问题,你可以重写你的getRoles
方法在那里添加额外的角色。你真的调用了构造函数吗?否则,条令通常不会调用实体的构造函数。