我对 CP 文档的深入研究越多,我就越意识到我的假设有多少是错误的。在寻求有效理解系统的那一刻,我正在寻找一个仅包含自定义对象(非事件/非答案/非联系)的表单,然后尝试在客户门户上使用它。
为了简单起见,我想要做的只是有一个 2 字段表单(两个文本框)和一个提交按钮作为前端。以下是我正在尝试做的事情:
- 以 的形式使用输入文本框,
<rn:widget .... />
以便我可以使用 等属性required
。validate_on_blur
我不确定这些属性是否也可以用于自定义对象,但我们稍后会讨论。 - 使用已定义的用于标准对象的表单验证方法(如果可能的话),这样我就不必重新发明轮子了。
- 成功验证后,将表单数据发布到我可以保存该数据的自定义控制器。
我很快意识到我根本无法input/FormInput
为自定义对象使用标准(生成文本框)小部件。我还发现我也不能使用标准input/TextInput
小部件。经过一番研发,我终于设法通过从头开始创建一个小部件并在其视图中添加适当的 HTML 来找到解决方案。
到目前为止,一切都很好。我的第一步得到了照顾。我能够使用
<rn:widget path="/custom/nl/custom_input" name="Packagename$Objectname.c$Fieldname" required = "true" />
在表单的视图页面中。
下一步,表单验证,是让我无限困惑的地方。我无法理解文档中给出的代码,因此决定在这里讨论它。
我遇到了这个不幸的是没有太大帮助。我还遇到了另一个线程(似乎找不到 URL),其中 OP 使用了一个自定义小部件,该小部件正在扩展input/TextInput
小部件,并想知道如何将验证应用于该文本框。给出的答案是覆盖onValidate
函数input/TextInput
并在错误时返回 false 或在成功时返回事件对象。
那么我是否正确地假设也许我可以采用类似的方法?由于我使用的是新的小部件,是否有类似的方法可以覆盖并返回 true 或 false?如果是,该函数的名称是什么?非常感谢任何帮助。