2014-12-29 105 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下載)的更多詳細信息。