跨多个实体的表单

时间:2014-12-29 09:42:07

标签: moqui

我正在尝试创建一个单独的表单来创建一个产品并添加一个SKU,但我还没有找到一个帮助我到目前为止的例子。

我想要构建的是一个包含三个文本行/区域字段的表单,用于输入用户输入的值,而我可以正确保存productName和描述的值idValue不出所料不救。我尝试在字段名称中包含完整的实体路径,但这也不起作用。

我们将非常感谢您对现有示例的任何建议或指示!

<?xml version="1.0" encoding="UTF-8"?>
<screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/xml-screen-1.5.xsd">

<parameter name="productId"/>

<transition name="newProduct">
    <default-response url=".">
        <parameter name="productId" value=""/>
    </default-response>
</transition>
<transition name="createProduct">
    <service-call name="create#mantle.product.Product"/>
    <default-response url="."/>
</transition>
<transition name="updateProduct">
    <service-call name="update#mantle.product.Product"/>
    <default-response url="."/>
</transition>

<widgets>
    <form-single name="CreateProduct" transition="createProduct">
        <field name="productName"><default-field><text-line/></default-field></field>
        <field name="description"><default-field><text-area/></default-field></field>
        <field name="idValue"><default-field><text-line></text-line></default-field></field>
        <field name="submitButton"><default-field title="Create"><submit/></default-field></field>
    </form-single>
</widgets>
</screen>

1 个答案:

答案 0 :(得分:1)

只需创建一个服务,该服务接受与表单字段匹配的输入参数,并使该服务完成所需。在HiveMind和Mantle中有各种各样的例子,包括HiveMind中使用mantle.work.TaskServices.create #Task服务的各种任务创建表单。

以下是具有该服务定义的TaskServices.xml文件:

https://github.com/moqui/mantle/blob/master/mantle-usl/service/mantle/work/TaskServices.xml

这是一个带有表单(NewTaskForm)的屏幕,它通过createTask转换调用此服务:

https://github.com/moqui/HiveMind/blob/master/screen/HiveMindRoot/Task/FindTask.xml

这是Moqui的一般模式:创建一个具有与表单字段匹配的输入参数的服务。当您这样做时,甚至存在来自服务器输入参数的各种约束,这些约束由浏览器中的JavaScript自动强制执行(即具有单个定义的客户端和服务器端验证)。

有关Moqui制作应用程序的更多详细信息(可以从moqui.org下载)。