Form object
The form object is used to generate form's HTML and validate user's input. First, you need to create a form object, and then add some fields to it.
Create a form object
<?php $form = new \Ip\Form();
Add a text field to a form
$field = new \Ip\Form\Field\Text( array( 'name' => 'firstField', // HTML "name" attribute 'label' => 'First field', // Field label that will be displayed next to input field )); $form->addField($field);
Output form's HTML
echo $form->render();
Fields
See /Ip/Form/Field directory, containing files with field classes. Following fields are available:
Field name |
Purpose | Field specific options |
Antispam |
Hidden field for antispam validation | |
Blank |
Blank field | |
CAPTCHA field | ||
Checkbox field |
checked text |
|
Color |
Color picker | |
Csrf |
Hidden field for validation against CSRF attack | |
Currency |
For price fields | |
E-mail input field | ||
File upload button | ||
Hidden |
Hidden HTML field | |
Informational field. Put any HTML you like. | html | |
Number |
Numeric value input | |
Password |
Password field | |
Radio buttons | ||
Range |
Range field | |
Add a repository file. (Requires login to administration page and form environment set to admin mode.) |
secure fileLimit preview |
|
RichText |
Rich text field | |
Select field | values | |
Submit button | ||
Text input field | ||
HTML text area field | ||
Url |
URL input field |
Each field can have following attributes:
- name - HTML name attribute,
- label - text label displayed next to input field,
- note - text displayed near input field,
- hint - text displayed on mouse over the input field,
- value - default field value,
- css - CSS class.
Fieldsets
Fieldsets can be used to group form fields, by drawing a box around the related elements.
Group input fieldS using fieldsets
<?php $form->addFieldset(new \Ip\Form\Fieldset('My fieldset 1')); $form->addField($field1); $form->addField($field2); $form->addField($field3); $form->addFieldset(new \Ip\Form\Fieldset('My fieldset 2')); $form->addField($field4); $form->addField($field5); $form->addField($field6);
Add validation rules
Use $form->addValidator($validator) method on fields to add validation rules. As a validator you can pass:
- String - if you use one of default validators that doesn't need any parameters, like Email, Required or Number
- Array - if you use one of default validators that needs parameters to be set. First array element is a string representing a name of a validator (e.g., Regex). A second element is a parameter passed to a validator (e.g., /^[0-9]*$/)
- Object - your custom validation object that extends \Ip\Form\Validator class.
<?php $field->addValidator('Required'); $field->addValidator('Regex', '/^[0-9]*$/'); $field->addValidator($customValidator);
Form object has two hidden validation fields added by default: Antispam and Csrf. You can remove them using following functions.
$form->removeSpamCheck()
$form->removeCsrfCheck()
HTML attributes
Use addClass method to add a specific class to a form.
$form->addClass('cssClassName');
Also, you can add other attributes, like id, etc.
$form->addAttribute('id', 'myCustomForm');
Form's environment
Set form's environment to admin
<?php $form->setEnvironment(\Ip\Form::ENVIRONMENT_ADMIN); ?>
Set form's environment to public
<?php $form->setEnvironment(\Ip\Form::ENVIRONMENT_PUBLIC); ?>
Field layouts (since 4.1.2)
Each input field on ImpressPages is surrounded by some additional HTML which gives freedom to style form using CSS. Label, error, notes, etc. are printed alongside. You can control it by overriding form's view files (see above) or use field layout. There are three layouts available:
- \Ip\Form\Field:LAYOUT_DEFAULT
- \Ip\Form\Field:LAYOUT_NO_LABEL
- \Ip\Form\Field:LAYOUT_BLANK
Set the layout as follow
$field = new \Ip\Form\Field\Text( array( 'layout' => \Ip\Form\Field::LAYOUT_NO_LABEL, 'name' => 'firstField', // HTML "name" attribute ) );
or
$field->setLayout(\Ip\Form\Field::LAYOUT_NO_LABEL);