Ferreteria/v2/usage/forms/creating: Difference between revisions
m (minor syntax correction) |
(control no longer needs a pointer to form, because field has one) |
||
Line 5: | Line 5: | ||
$oForm = new fcForm_DB($this->Table()->ActionKey(),$this); | $oForm = new fcForm_DB($this->Table()->ActionKey(),$this); | ||
$oField = new fcFormField_<type>($oForm,'<field name>'); | $oField = new fcFormField_<type>($oForm,'<field name>'); | ||
$oCtrl = new fcFormControl_HTML[_<type>]( | $oCtrl = new fcFormControl_HTML[_<type>]($oField,array(<HTML attributes>)); | ||
</php> | </php> | ||
The first line creates a Form object, the next line creates a Field, and the third line assigns a Control to the Field. Adding additional fields and controls follows the format of the last 2 lines. | The first line creates a Form object, the next line creates a Field, and the third line assigns a Control to the Field. Adding additional fields and controls follows the format of the last 2 lines. | ||
Line 38: | Line 38: | ||
<php> | <php> | ||
$oField = new fcFormField_Time($oForm,'WhenEnt'); | $oField = new fcFormField_Time($oForm,'WhenEnt'); | ||
$oCtrl = new fcFormControl_HTML( | $oCtrl = new fcFormControl_HTML($oField,array('size'=>10)); | ||
$oField->Format('m/Y'); | $oField->Format('m/Y'); | ||
</php> | </php> | ||
Line 46: | Line 46: | ||
<php> | <php> | ||
$oField = new fcFormField_Num($oForm,'ID_Place'); | $oField = new fcFormField_Num($oForm,'ID_Place'); | ||
$oCtrl = new fcFormControl_HTML_DropDown( | $oCtrl = new fcFormControl_HTML_DropDown($oField,array()); | ||
$oCtrl->Records($this->PlaceTable()->GetData_forDropDown()); | $oCtrl->Records($this->PlaceTable()->GetData_forDropDown()); | ||
</php> | </php> | ||
'''TextArea''': | '''TextArea''': | ||
<php>$oCtrl = new fcFormControl_HTML_TextArea( | <php>$oCtrl = new fcFormControl_HTML_TextArea($oField,array('rows'=>3,'cols'=>60));</php> | ||
==Other Elements== | ==Other Elements== | ||
See "{{l/same|displaying}}" for the care and feeding of form templates. | See "{{l/same|displaying}}" for the care and feeding of form templates. |
Revision as of 20:04, 9 January 2016
How to create a form for editing record-based data:
from Template:Vbzcart/code (function PageForm()): <php> $oForm = new fcForm_DB($this->Table()->ActionKey(),$this); $oField = new fcFormField_<type>($oForm,'<field name>'); $oCtrl = new fcFormControl_HTML[_<type>]($oField,array(<HTML attributes>)); </php> The first line creates a Form object, the next line creates a Field, and the third line assigns a Control to the Field. Adding additional fields and controls follows the format of the last 2 lines.
Recent changes:
- There is now also a Storage object (in addition to the Control object) for each Field (aka Native) object, but you don't need to create it (see next note).
- Creating the Control object for each Field is now also optional; each Field (aka "native object") now has default Control and Storage classes which it instantiates when needed. You can access them via $oField->ControlObject() and $oField->StorageObject() respectively.
Fields and Controls
Field types (Template:Ferreteria/code):
|
Control types (Template:Ferreteria/code):
|
Examples
General: <php>// set a default value for new records $oField->SetDefaultNative($this->TitleID());</php> Timestamp: <php> $oField = new fcFormField_Time($oForm,'WhenEnt'); $oCtrl = new fcFormControl_HTML($oField,array('size'=>10)); $oField->Format('m/Y'); </php> This sets the format of the Control for the "WhenEnt" field based on the parameter string used by the PHP date() function – in this case, just the month (2 digits) and year (4 digits) are displayed.
Dropdown selector: <php> $oField = new fcFormField_Num($oForm,'ID_Place'); $oCtrl = new fcFormControl_HTML_DropDown($oField,array()); $oCtrl->Records($this->PlaceTable()->GetData_forDropDown()); </php>
TextArea: <php>$oCtrl = new fcFormControl_HTML_TextArea($oField,array('rows'=>3,'cols'=>60));</php>
Other Elements
See "displaying" for the care and feeding of form templates.