增加一个创建表单

让我们增加一个按钮弹出创建Tutorial的表单,增加一个transition来处理输入。

想象一下页面之间的连接,就像有序图,每个页面是一个节点,定义在每个页面中的 transition 告知如何从那个页面去到另一个页面(或回到同一个页面),并且作为转换的部分,有可能会运行服务端动作或一个服务。根据UI设计需要,单个 transition 因为不同的条件以及错误情况,会有有多个响应,转换到多个页面。

首先在actions元素上添加一个transition到FindTutorial.xml页面:

<transition name="createTutorial">
    <service-call name="create#tutorial.Tutorial"/>
    <default-response url="."/>
</transition>

此 transition 调用 create#tutorial.Tutorial 服务,然后回到当前页面。

create#tutorial.Tutorial 服务是何方神圣?我们并没有定义类似的东西。Moqui Service Facade 为实体CRUD操作提供了一类特殊的不需要定义更不需要实现的服务。服务名由两部分组成,一个动词和一个名称,用#号分隔。只要动词是create、update、store或delete,名称是一个有效的实体名。ServiceFacade将视其为一个隐式的entity-auto服务并执行期望的操作。它是基于实体定义和传递给服务调用的参数来做的。例如,使用create动词加一个有单一主键字段的实体,如果你为那给字段传入一个值,它将使用该值,否则它将使用实体名作为序列的键来自动生成一个序列值。

下一步添加创建表单,在一个隐藏的容器(container)内,当按钮被点击时将展开。在原来的 FindTutorial.xml 页面的 form-list 元素上的 widget 元素内放入下面这些,让它出现在页面中列表表单之上:

<container-dialog id="CreateTutorialDialog" button-text="Create Tutorial">
    <form-single name="CreateTutorial" transition="createTutorial">
        <auto-fields-entity entity-name="tutorial.Tutorial" field-type="edit"/>
        <field name="submitButton"><default-field title="Create"><submit/></default-field></field>
    </form-single>
</container-dialog>

表单定义涉及的 transition 是刚才加到页面的,并且使用 field-typeeditauto-fields-entity 元素来生成编辑字段。最后一个小细节是声明一个按钮来提交表单。这样就好了。

尝试加一条记录,并可以看到它在原来页面的列表表单中出现。

results matching ""

    No results matching ""