如何在 Magnolia 中创建自定义表单处理器?

How to create a custom form processor in Magnolia?

问题

我在呈现表单的 magnolia 中创建了一个

⋅ 应用程序从 jcr 渲染一些信息

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

⋅ 如何持久化这些变化?

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

我做了什么:

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

  2. Java Class

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 处停止。

我在这里错过了什么?

因为这里没有玉兰社区这样的东西,所以我就是这样做的:

自定义表单处理器在我的案例中不起作用。我只是想处理请求,但要以 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.

解决了这个问题

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

如果您有一个具有固定值的表单,您可以通过模型 class 或自定义 rest 端点

处理请求