Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用构造函数向组中添加角色_Php_Symfony_Fosuserbundle_Roles_Usergroups - Fatal编程技术网

Php 如何使用构造函数向组中添加角色

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

我一直试图在每个团队创建时为他们设置角色。我认为使用_构造函数将是一个好主意,但它不起作用,角色_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();
    }
}

文档最好地说明了:

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

资料来源:


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

你真的调用了构造函数吗?否则,条令通常不会调用实体的构造函数。