Catching save event in Form Builder

2019-08-29 23:08发布

问题:

I would like to send submission after form has been saved in Form Builder, I was trying something like this at first (in my XBL file):

<xf:action ev:event="fr-data-save-done" ev:observer="fr-form-model">
    <xf:message event="#all" level="modal">Saved</xf:message>
    <xf:send submission="my-submission" ev:event="#all"/>
</xf:action>

The code above is placed in XBL file between xbl:template, outside xbl:model (though I tried to put it inside xbl:model with no luck). Unfortunately it's not working, after I save my form in Form Builder message is not shown. Anyone got idea why it's not working?

回答1:

You could place by hand an event handler like this:

<foo:bar id="my-component-id" bind="my-bind">
    <xf:dispatch
        event="fr-data-save-done"
        observer="fr-form-model"
        name="my-custom-event"
        targetid="my-component-id"/>
</foo:bar>

The handler doesn't have to be within the element:

<foo:bar id="my-component-id" bind="my-bind"/>
<xf:dispatch
    event="fr-data-save-done"
    observer="fr-form-model"
    name="my-custom-event"
    targetid="my-component-id"/>

And inside the XBL component:

<xbl:binding id="my-binding-id" element="foo:bar">
    <xbl:handlers>
        <xbl:handler event="my-custom-event" phase="target">
            ... XForms actions here ...
        </xbl:handler>
    </xbl:handlers>
    ...
</xbl:binding>


标签: orbeon xbl