Scoped Hooks
Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
onUtility
By far the most common type of scoped hook! This hook is called with the runUtilityHook action like so:
In BetterForms you can differentiate buttons by passing a different value in the options.type
key. Then, in FileMaker parse out the options object from the $$BF_Payload and branch the script accordingly.
onFieldValidationHook
This hook is called when a field has been assigned an fmsHook
validator.
The .validation
object is broken out for you in the var $validation
You can make business logic decisions based on the data here. The rest of the other objects are also available including $actions
so you can inject workflow changes too.
To pass back validation error messages set the validation.error
element to your error message.
.validation Object | Type | Description |
---|---|---|
validation.value | string | The value of the single field that is requesting validation. |
validation.field | { object } | This is the formSchema field object, this can be used to identify what field is requesting validation. |
validation.model | { object } | This is the data model for the object(s) requesting validation. This is not needed currently but present for future use. |
validation.error | { string or array } | This is passed back to the server and the contents are displayed as error messages. |
Wizard Forms
The following hooks only apply the pages of the "wizard" type. The are called on special cases, but otherwise function just like the onUtility hook type.
onTabChange
This hook is run if the Run onTabChange Script Hook is enabled for a wizard form.
onComplete
This is run when the user clicks the Complete button for a wizard form.
Additional Submission options
There are times you want to run actions prior to calling server side scripts. If an optional wizardOnComplete_actions
key has bee set in the form ( misc tab) then those actions will be run in place of the onComplete
script hook. You will have to call a utility hook within your actions for server side logic.
Last updated