2014-12-29 152 views
0

我试图创建一个创建产品的单一表单,并且还添加了一个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

只需创建一个服务,该服务将输入参数与表单字段匹配,并让该服务执行必要的操作。在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下载)的更多详细信息。