garvinhicking / gh-validationdummy
验证示例
0.2.2
2024-05-29 12:44 UTC
Requires
- php: >= 8.1.0, <= 8.3.99
- typo3/cms-core: ^12.4 || ^13.0
Replaces
- garvinhicking/gh_validationdummy: 0.2.2
README
仅为展示Extbase验证而创建的示例
这展示了简单模型("Person")的简单记录创建和编辑。
有两个字段,"firstName"和"lastName",它们是唯一可编辑的字段。
然而还有一个第三个“特殊”字段。这个字段只能在后端创建,且是必填的。
在前端编辑中,这个“特殊”字段不应可触摸。
如果您在前端创建/编辑部分的<f:form>
部分中省略属性,验证("NotEmpty")仍然会触发,并将阻止您持久化或甚至检查“特殊”未设置的所有元素。
如果您将@IgnoreValidation("person")
传递给控制器中的updateAction
或createAction
,您将完全禁用对象的任何验证(不推荐)。当然,在这种情况下,您可以在控制器操作中完全手动验证对象。
如果您使用@Validate(...)
并带有自定义验证,这将始终在域模型验证之上执行 - 因此您只能添加额外的验证,而不能绕过现有的验证。
此扩展展示的解决方案是“DTO”(“数据传输对象”)方法。在这里,创建了主域模型的一个小变体,没有“特殊”属性。它只包含您在前端真正编辑的属性。
在操作中,DTO用原始域模型输入填充,在持久化之前,检索实际对象并用DTO中的数据填充。
尽管这可能会感觉有很多冗余,但它确实有助于您创建一个前端可编辑的域模型的不同模型。您甚至可以将DTO作为基础,并让“正常”域模型从您的DTO和extbase的AbstractEntity
扩展,这样您的extbase域模型就只包含前端不可用的所有数据。
这只是一个非常快速和简单的示例,希望对任何人都有帮助。
如何使用
- 安装扩展(例如,通过Packagist
garvinhicking/gh-validationdummy
)或将其复制粘贴到您的packages
结构中(或通过GIT检索) - 将TypoScript模板添加到您的根站点
- 创建两个页面,如“DTO”和“Validator”
- 将相应的“ValidationDummy: DTO”放置在您的“DTO”页面上,将“ValidationDummy: Validator”放置在“Validator”页面上
- 打开前端,通过插件提供的链接创建数据
- 您还可以在后台(在SysFolder内部)插入记录(以便您有一个初始列表视图)