Symfony 5.3.1 模型字段对当前用户的默认值

问题描述

使用 Symfony 5.3.1(和 API 平台),我已经实现了安全性并生成一个认的用户模型。现在,当有人发布文章时,我希望关联 User 对象。

我在文章模型的构造函数中尝试过:

    /* src/Entity/Article.PHP */
    public function __construct()
    {
        $this->submittedBy = $this->getUser();
        // Attempted to call an undefined method named \"getUser\" of class \"App\\Entity\\Article\
    }

但看起来 $this->getUser() 仅对控制器可用。

请问在哪里可以将其设置为新文章用户值?

解决方法

有几种方法可以做到这一点。最简单的是在构造 Article 对象时,注入用户。

/* src/Entity/Article.php */
public function __construct($user)
{
    $this->submittedBy = $user;
}

然后,无论您做什么 new Article();(可能在您的控制器中),您都需要将其更改为 `new Article($this->getUser());

有些项目可以通过听众等为您完成所有这些工作,例如 Blameable extension here

但在您了解基础知识之前,我不建议您继续。