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

问题描述 投票:0回答:1

我已经尝试在每个小组创建时为每个小组设置角色。我以为使用__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();
    }
}
php symfony fosuserbundle roles usergroups
1个回答
0
投票

文档说得最好:

仅当younew关键字构造新实例时才调用实体的构造函数。主义从不调用实体构造函数,因此您可以随意使用它们,甚至可以要求任何类型的参数。

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

因此,基本上,除非您实际上store数据库中的角色,否则从db加载对象时,构造函数是无关紧要的。有多种解决方法,您可以覆盖getRoles方法以在其中添加其他角色。

© www.soinside.com 2019 - 2024. All rights reserved.