garvinhicking/gh-validationdummy

验证示例

安装: 7

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:typo3-cms-extension

0.2.2 2024-05-29 12:44 UTC

This package is auto-updated.

Last update: 2024-08-29 13:06:42 UTC


README

仅为展示Extbase验证而创建的示例

这展示了简单模型("Person")的简单记录创建和编辑。

有两个字段,"firstName"和"lastName",它们是唯一可编辑的字段。

然而还有一个第三个“特殊”字段。这个字段只能在后端创建,且是必填的。

在前端编辑中,这个“特殊”字段不应可触摸。

如果您在前端创建/编辑部分的<f:form>部分中省略属性,验证("NotEmpty")仍然会触发,并将阻止您持久化或甚至检查“特殊”未设置的所有元素。

如果您将@IgnoreValidation("person")传递给控制器中的updateActioncreateAction,您将完全禁用对象的任何验证(不推荐)。当然,在这种情况下,您可以在控制器操作中完全手动验证对象。

如果您使用@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内部)插入记录(以便您有一个初始列表视图)