我正在尝试验证自定义 DTO 类中的枚举类型。我正在尝试使用 Symfony#[Assert\Choice]属性,但如果传递错误的值,它似乎不起作用。
自定义 DTO:
#[Assert\Choice(callback: 'getConditionTypes')]
public string $conditionType;
public static function getConditionTypes(): array
{
return array_column(ConditionType::cases(), 'name');
}
Run Code Online (Sandbox Code Playgroud)
枚举类:
enum ConditionType: string
{
case NEW = "NEW";
case USED = "USED";
case CRASHED = "CRASHED";
case BROKEN = "BROKEN";
case FOR_PARTS = "FOR_PARTS";
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过 Postman 传递带有错误值的条件类型时,例如 "conditionType": "rand"它通过 DTO 时没有任何问题,并且我试图捕获是否存在错误值。我缺少什么?
我没有提供回调并使用 Assert\Choice,而是使用#[Assert\Type(type: ConditionType::class)]它自动验证传递的值是否是此枚举的一部分。
| 归档时间: |
|
| 查看次数: |
3093 次 |
| 最近记录: |