如何组合验证多个 Typo3 动作参数?
How to validate multiple Typo3 action parameters in combination?
Typo3 文档描述了可用于验证单个控制器操作参数的@Validate 注释:
但是,它只描述了如何为单个参数添加自定义验证器。可以添加多个验证注释,但它们中的每一个都只能验证一个参数,而不是多个参数的组合。
第一个问题:是否可以添加一个验证器来检查特定控制器操作的多个参数,甚至所有参数?
当然,显而易见的解决方法是将多个参数合并到一个参数中,例如使用数组或对象。但如果参数本身已经是(独立的)模型对象,这就特别烦人了。
第二个问题:如果第一个问题的答案是“这是不可能的”,那么合并控制器操作的参数的推荐方法是什么?
(例如:应该使用数组吗?由于缺乏类型安全和其他功能,这在 Typo3 中似乎不是首选。应该创建 class 吗?但是哪种 class 那会是什么?一个实用程序 class?一个模型 class?但是那个模型 class 需要抑制持久性吗?这看起来很乱。)
我正在使用 Typo3 的 9.5 版,但如果版本 10 中的情况有所不同,那也很有趣。
据我所知,我建议为此目的使用数据传输对象 (DTO)。
如果您的模型必须组合验证,但不属于任何其他实体,那么将它们组合在 DTO 中可能是最好的方法。因此,验证逻辑然后聚集在一个验证器中。
另请参阅此博客 post 关于 DTO:https://usetypo3.com/dtos-in-extbase.html
Typo3 文档描述了可用于验证单个控制器操作参数的@Validate 注释:
但是,它只描述了如何为单个参数添加自定义验证器。可以添加多个验证注释,但它们中的每一个都只能验证一个参数,而不是多个参数的组合。
第一个问题:是否可以添加一个验证器来检查特定控制器操作的多个参数,甚至所有参数?
当然,显而易见的解决方法是将多个参数合并到一个参数中,例如使用数组或对象。但如果参数本身已经是(独立的)模型对象,这就特别烦人了。
第二个问题:如果第一个问题的答案是“这是不可能的”,那么合并控制器操作的参数的推荐方法是什么?
(例如:应该使用数组吗?由于缺乏类型安全和其他功能,这在 Typo3 中似乎不是首选。应该创建 class 吗?但是哪种 class 那会是什么?一个实用程序 class?一个模型 class?但是那个模型 class 需要抑制持久性吗?这看起来很乱。)
我正在使用 Typo3 的 9.5 版,但如果版本 10 中的情况有所不同,那也很有趣。
据我所知,我建议为此目的使用数据传输对象 (DTO)。 如果您的模型必须组合验证,但不属于任何其他实体,那么将它们组合在 DTO 中可能是最好的方法。因此,验证逻辑然后聚集在一个验证器中。
另请参阅此博客 post 关于 DTO:https://usetypo3.com/dtos-in-extbase.html