问题描述
使用 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
但在您了解基础知识之前,我不建议您继续。