【问题标题】:How to create a custom form processor in Magnolia?如何在 Magnolia 中创建自定义表单处理器?
【发布时间】:2019-07-10 14:38:07
【问题描述】:

问题

我在 magnolia 中创建了一个 custom app 来呈现一个表单。

⋅ 应用从jcr渲染一些信息

⋅ 用户对该表单进行更改并提交

⋅如何持久化这些变化?

根据 magnolia documentation 需要自定义表单处理器。

我做了什么:

  1. 创建了自定义表单处理器 /modules/form/templates/components/myFormProcessor

  2. Java 类

public class Bla extends AbstractFormProcessor {

    @Override
    protected void internalProcess(Node content, Map<String, Object> parameters) throws FormProcessorFailedException {
        final String stopHere = "•••";
    }
}

  1. 设置表单操作
<form action="./persistMyChanges" method="POST">
   •••
</form>

不幸的是,调试器不会停在stopHere

我在这里错过了什么?

【问题讨论】:

    标签: content-management-system magnolia


    【解决方案1】:

    由于没有木兰社区之类的东西,我就是这样做的:

    在我的情况下,自定义表单处理器无法正常工作。我只是想处理请求,但要做到这一点,您必须采用 magnolia 方式:

    ⋅ 向您的模板添加表单组件

    ⋅ 以三种类型中的任何一种定义您的模板 (page|area|component) 其中模板 ⊆ 页面 ⊆ 区域 ⊆ 组件

    ⋅ 然后你必须使用取决于你的配置的指令,在我的情况下它应该是这样的:[@cms.area name="main"]

    ⋅ 我开始收到如下模板错误:

    The following has evaluated to null or missing:
    ==> stkfn [in template "templating-kit/pages/section/contentArea.ftl" at line 7, column 38]
    

    即使在 magnolia 企业支持的帮助下也无法解决此问题。

    我使用filter 解决了这个问题。

    【讨论】:

      【解决方案2】:

      如果您使用的是 magnolia forms modul 中的表单组件,那么您应该创建一个新的额外表单处理器来处理您的请求(类似于电子邮件处理器)

      如果您有一个具有固定值的表单,您可以通过模型类或自定义休息端点处理请求

      【讨论】:

        猜你喜欢
        • 2021-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 1970-01-01
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多