我正在尝试验证自定义DTO类中的枚举类型。我试图使用Symfony #[Assert\Choice]
属性,但如果我传递错误的值,它似乎不起作用。
自定义DTO:
#[Assert\Choice(callback: 'getConditionTypes')]
public string $conditionType;
public static function getConditionTypes(): array
{
return array_column(ConditionType::cases(), 'name');
}
枚举类:
enum ConditionType: string
{
case NEW = "NEW";
case USED = "USED";
case CRASHED = "CRASHED";
case BROKEN = "BROKEN";
case FOR_PARTS = "FOR_PARTS";
}
当我试图通过Postman传递一个值错误的conditionType时,例如"conditionType": "rand"
,它通过DTO没有任何问题,我试图捕捉是否有错误的值。我错过了什么?
1条答案
按热度按时间bnl4lu3b1#
我没有使用Assert\Choice来提供回调函数,而是使用了
#[Assert\Type(type: ConditionType::class)]
,它会自动验证传递的值是否是该枚举的一部分。