Usage
How it works
The FormIt hooks1 uses the following properties:
Hook Properties for FormIt2db
Property | Description | Default |
---|---|---|
arrayFields | JSON encoded array of form fields that contains array data i.e. ["field_1", "field_2"] . |
[] |
arrayFormat | Format to transform form fields that contains array data (i.e. checkboxes) into. | csv |
autoPackage | Use the autocreated xPDO Package2. | 0 (No) |
classname | Class name of the xPDO object. | - |
fieldname | xPDO fieldname the POST param is compared with – to update a row instead of creating a new one. | 'paramname' |
packagename | Package name of the xPDO package. | - |
paramname | Requested POST param – to update a row instead of creating a new one. | - |
prefix | Table prefix of the xPDO package. | MODX DB prefix |
removeFields | JSON encoded array of form fields not saved in the xPDO object i.e. ["field_1", "field_2"] . |
[] |
tablename | Table name of the MySQL table (only used if autoPackage is enabled). | - |
where | JSON encoded xPDO where clause – to update a row instead of creating a new one. | - |
Hook Properties for db2FormIt
Property | Description | Default |
---|---|---|
arrayFields | JSON encoded array of database fields that are transformed into arrays i.e. ["field_1", "field_2"] . |
[] |
arrayFormat | Format to transform database fields that contains array data (i.e. checkboxes) into. | csv |
autoPackage | Autocreate the xPDO Package with packagename and tablename2. | 0 (No) |
classname | Class name of the xPDO object. | - |
fieldname | xPDO fieldname the REQUEST param is compared with – to retreive an existing row. | 'paramname' |
ignoreFields | JSON encoded array of database fields that are not retreived into FormIt i.e. ["field_1", "field_2"] . |
[] |
notFoundRedirect | ID of the MODX resource the user is redirected to, if the requested row is not found. | - |
packagename | Package name of the xPDO package. | - |
paramname | Requested REQUEST param – to retreive an existing row. | - |
prefix | Table prefix of the xPDO package. | MODX DB prefix |
tablename | Table name of the MySQL table (only used if autoPackage is enabled). | - |
where | JSON encoded xPDO where clause – to retreive an existing row. | - |
Examples
FormIt call
The following FormIt call loads the record of the xPDO class MyPackageClass
where the value in the id
field is equal to the REQUEST parameter item
and
where the field value updated
is equal to 0
. The fields field_1
and
field_2
are not loaded into FormIt values. The fields field_3
and field_4
are not saved into the database record.
[[!FormIt?
&preHooks=`...,db2FormIt,...`
&hooks=`...,FormIt2db,...`
&packagename=`mypackage`
&classname=`MyPackageClass`
&fieldname=`id`
¶mname=`item`
&where=`{"updated:=":0}`
&ignoreFields=`["field_1", "field_2"]`
&removeFields=`["field_3", "field_4"]`
]]
Form code
<form action="[[~[[*id]]]]" method="post">
<input type="hidden" name="item" value="[[!+fi.id]]"/>
...
</form>
-
The snippets base on the code in the following thread in MODX forum https://forums.modx.com/thread/32560/formit2db-with-autocreate-schema-classes ↩
-
If the xPDO package is autocreated, the classname in the package is generated by MODX and could be different to a classname set by parameter. If you disable the autoPackage parameter later, please look which classname was generated and change the parameter to that value. ↩↩