【发布时间】:2020-07-29 03:27:58
【问题描述】:
EasyAdmin 是否支持具有不可为空属性的构造函数参数的实体类?即使您单击“添加”按钮,EasyAdmin 也会实例化实体类,对吗?不幸的是,这会导致“函数 __construct() 的参数太少”错误。你有解决这个问题的办法吗?
我倾向于将构造函数用于不可为空的实体属性。不幸的是,当我单击 e.g. 时,EasyAdmin 会抛出类似这样的错误。 Add FiscalYear按钮创建一个新的实体对象(FiscalYear在我的例子中):
Too few arguments to function App\Entity\FiscalYear::__construct(), 0 passed in /myProject/vendor/easycorp/easyadmin-bundle/src/Controller/AdminControllerTrait.php on line 618 and exactly 2 expected
如何防止这些错误?正如您在以下实体类中看到的那样,两个构造函数参数表示要通过表单提交的数据:
<?php
declare(strict_types=1);
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\FiscalYearRepository")
*/
class FiscalYear
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private ?int $id = null;
/**
* @ORM\Column(type="integer")
*/
private int $title;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private bool $completed = false;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Company", inversedBy="fiscalYears")
* @ORM\JoinColumn(nullable=false)
*/
private Company $company;
public function __construct(int $title, Company $company)
{
$this->title = $title;
$this->company = $company;
}
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): int
{
return $this->title;
}
public function setTitle(int $title): void
{
$this->title = $title;
}
public function getCompleted(): bool
{
return $this->completed;
}
public function setCompleted(bool $completed): void
{
$this->completed = $completed;
}
public function getCompany(): Company
{
return $this->company;
}
public function setCompany(Company $company): void
{
$this->company = $company;
}
}
有没有可能让EasyAdmin在不实例化实体类的情况下显示“创建新实体对象”的形式?
【问题讨论】: