如何在 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
.
那样指定它
当我使用:
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
.