Symfony Easyadmin ChoiceField与枚举不工作

lvjbypge  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(105)

Symfony Easyadmin抛出错误,而试图添加选择与枚举根据官方文档EasyAdmin Choice Field
注:-省略不必要的代码行。
我的代码:

<?php

namespace App\Entity;

enum OGTypeStatus: string {

    case Website = 'website';
    case Article = 'article';
    case Book = 'book';
    case Profile = 'profile';
}

// inside class
#[ORM\Column(type: Types::STRING, enumType: OGTypeStatus::class, nullable: true)]
private ?string $ogType = null;

字符串
在Easyadmin中:根据官方文档setChoices

// there's no need to call ->setChoices(); EasyAdmin will get all possible
// values via Doctrine; it's equivalent to calling: ->setChoices(BlogPostStatus::cases())
// yield ChoiceField::new('status');

public function configureFields(string $pageName): iterable {
  $ogType = ChoiceField::new('ogType');
  // if(true){ return $ogType}
}

**错误:-**如果已经设置了值(仅用于枚举字段),则在索引页和详细信息页中抛出错误

Cannot assign App\Entity\OGTypeStatus to property App\Entity\SEO::$ogType of type ?string


如果枚举字段为空或null。显示正确。
在新页面:-当提交枚举值抛出错误

Warning: Attempt to read property "value" on string

//from log
Uncaught PHP Exception ErrorException: "Warning: Attempt to read property "value" on string" at /home/.../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ReflectionEnumProperty.php line 62

{
    "exception": {}
}

**问题:-**如何正确设置choice字段中的enum?

67up9zun

67up9zun1#

最后,它通过从实体中删除enumType: OGTypeStatus::class来工作

#[ORM\Column(type: Types::STRING, nullable: true)]
private ?string $ogType = null;

字符串
并在easyadmin中添加选择,

$ogType = ChoiceField::new('ogType')->setChoices(OGTypeStatus::cases())


所有其他代码行都是相同的。

相关问题