【发布时间】:2021-07-04 07:32:46
【问题描述】:
将 Symfony 4.4 与 Easy Admin 3 一起使用:
我有一对一的关系
class Usuario
{
...
/**
* @ORM\OneToOne(targetEntity=Hora::class, inversedBy="usuario", cascade={"persist", "remove"})
*/
private $hora;
...
}
class Hora
{
...
/**
* @ORM\OneToOne(targetEntity=Usuario::class, mappedBy="hora", cascade={"persist", "remove"})
*/
private $usuario;
...
}
我有一个用于 Usuario 的 CRUD 控制器:
class UsuarioCrudController extends AbstractCrudController
{
public function configureFields(string $pageName): iterable
{
...
return [
...
AssociationField::new('hora', 'Hora'),
];
一切似乎都还好,但在“Usuario”的管理表单中,“hora”字段显示了数据库中的所有值,甚至那些已经分配给其他“Usuario”实体的值:
我想要下拉控件仅显示未分配的值,加上实际“Usuario”实体的值,因此控件易于使用。
使用 easyadmin 执行此操作的正确方法是什么?
我已经设法在 UsuarioCrudController 类中使用 $this->getDoctrine() 和 ->setFormTypeOptions([ "choices" => 对该字段进行编码以仅显示未关联的“Hora”值,
但我无法访问正在管理的实际实体,也无法访问 UsuarioCrudController 类(可能无法访问),也无法访问 Usuario 类(我在这里尝试过 __construct(EntityManagerInterface $entityManager) 无济于事,因为该值没有好像被注入了,不知道为什么)。
【问题讨论】:
标签: symfony dependency-injection doctrine-orm easyadmin easyadmin3