如何组合验证多个 Typo3 操作参数?

问题描述

Typo3 文档描述了 @Validate 注释,可用于验证单个控制器操作的参数:

但是,只描述了如何为单个参数添加自定义验证器。可以添加多个验证注解,但同样,每个注解只能验证一个参数,而不是多个参数的组合。

第一个问题:是否可以添加一个验证器来检查特定控制器操作的多个参数,甚至所有参数?

当然,显而易见的解决方法是将多个参数组合在一个参数中,例如使用一个数组或一个对象。但是如果参数本身已经是(独立的)模型对象,这尤其令人讨厌。

第二个问题:如果第一个问题的答案是“这是不可能的”,那么推荐的结合控制器动作参数的方法是什么?

(例如:应该使用数组吗?由于缺乏类型安全和其他功能,这在 Typo3 中似乎不是首选。应该创建一个类吗?但那是哪种类?实用程序类?一个模型类?但是那个模型类需要抑制持久性?这似乎很混乱。)

我使用的是 9.5 版的 Typo3,但如果 10 版的情况有所不同,那也会很有趣。

解决方法

据我所知,我建议为此目的使用数据传输对象 (DTO)。 如果您的模型必须组合验证,但不属于任何其他实体,则将它们组合在 DTO 中可能是最好的方法。因此,验证逻辑会聚集在一个验证器中。

另见这篇关于 DTO 的博文:https://usetypo3.com/dtos-in-extbase.html

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...