Magnolia 中的可重用表单组件
Posted
技术标签:
【中文标题】Magnolia 中的可重用表单组件【英文标题】:Reusable Form Component in Magnolia 【发布时间】:2021-06-09 18:48:42 【问题描述】:我使用表单组件创建表单并将数据插入到带有 javascript 表单处理器的数据库中。
我想创建一个可重复使用的表单,其中包含一组固定字段作为组件,我可以将其添加到任何页面,而无需填写表单对话框,也无需在每个表单组件中手动添加字段。
我可以创建一个包含所需表单字段的 ftl,但是如何将对话框的数据存储在组件中以避免每次插入表单时都必须填写它?
【问题讨论】:
我不能完全掌握用例,但你不能使用默认值吗? @Ducaz035 我想创建一个表单来收集客户数据,供网站编辑添加到任何页面。表单模块当前的工作方式是添加表单组件,在对话框中填写成功后要显示的页面,然后添加所需的表单字段。我想消除所有这些步骤,只需要一个组件来创建一个带有预设字段和预设成功页面的表单。我创建了一个自定义 ftl 和处理器,它发布但并插入到数据库中,但它不会重定向到成功页面,如果出现错误,它也不会显示错误页面 【参考方案1】:我看到了两种方法:
a) 通过模型类处理自定义数据 您可以创建一个自定义组件,其中包含带有输入元素的表单。不过,这与表单模块无关。为了处理数据,最简单的方法是为您的组件配置modelClass,并在其中实现模型类中的"executeEarly()" method。在那里,您可以对表单传输的数据做任何您需要的事情(您会在 MgnlContext 中找到数据)。
b) 从子组件自动生成 如果您更喜欢使用表单模块进行数据处理,您可以创建自定义表单组件来扩展常规表单组件,然后创建您需要的 auto-creates the sub-components(即输入元素组件)。
【讨论】:
以上是关于Magnolia 中的可重用表单组件的主要内容,如果未能解决你的问题,请参考以下文章