首页 > 解决方案 > 根据用户名向 FOS 用户添加自定义属性

问题描述

Symfony 3.4 应用程序中,我有一个Entity\User扩展FOS\UserBundle\Model\User. 我有一些自定义属性在注册新用户时添加到数据库中,如下所示:

    /**
     * @ORM\Column(name="foo", type="string")
     */
    private $foo;

    public function __construct()
    {
        parent::__construct();

        if(empty($this->foo)) {
            $this->foo = 'bar';
        }
    }

……这很好用。但是,我还有一个属性,其内容应该自动基于username. (有点像username_canonical,但应用了不同的逻辑。所述逻辑超出了这个问题的范围。)我尝试username以多种方式分配 :

    /**
     * @ORM\Column(name="username_thing", type="string")
     */
    private $username_thing;

    public function __construct()
    {
        parent::__construct();

        if(empty($this->username_thing)) {
            $this->username_thing = $this->username; // Method 1.
            $this->username_thing = $this->getUsername(); // Method 2.
            $this->username_thing = parent::getUsername(); // Method 3.
            $this->setUsernameThing($this->username); // Method 4.
            // etc.
        }
    }

…但无论我做什么,当新用户注册时,该属性总是会出现NULL在数据库中。

任何想法如何去做?

标签: phpsymfonyfosuserbundlesymfony-3.4

解决方案


推荐阅读