如何在 Symfony EasyAdmin 4 中使用关联字段

How to use Association field in Symfony EasyAdmin 4

当我使用:

public function configureFields(string $pageName): iterable
    {
      return [
            AssociationField::new('XYZ')
        ];
    }`

我收到错误 "Object of class App\Entity\XYZ could not be converted to string"

当我将 ->autocomplete() 添加到 AssociationField::new('XYZ') 时,它可以工作,但在保存时显示错误 "Expected argument of type "?string", "App\Entity\XYZ" given at property path "XYZ".

将此字段用于多对一关系的正确方法是什么? Symfony Easy Admin 文档 https://symfony.com/doc/current/EasyAdminBundle/fields/AssociationField.html 根本没有帮助。

您的实体 App\Entity\XYZ 将被转换为关联字段中的字符串(这是标准的 symfony 实体类型)。否则无法在您的实体中设置标签 select。

它会尝试使用__toString方法转换它,所以你需要在你的实体中添加它。

例如:

/**
 * @ORM\Entity(repositoryClass=XyzRepository::class)
 */
class Xyz
{
  public function __toString(){
    return $this->name; //or anything else
  }

EasyAdmin 应该能够猜测实体 class,因此您不必像简单的 EntityType.

那样指定它