Skip to content

Forms

Use this namespace for all forms:

use Gibbon\Forms\Form;

Form - Basic example.

php
$form = Form::create('action', $_SESSION[$guid]['absoluteURL'].'/modules/'.$_SESSION[$guid]['module'].'/thing.php');
                
$form->addHiddenValue('address', $_SESSION[$guid]['address']);

$row = $form->addRow();
    $row->addSubmit();

echo $form->getOutput();

Delete Form

Namespace and form example.

php
use Gibbon\Forms\Prefab\DeleteForm;

$form = DeleteForm::createForm($_SESSION[$guid]['absoluteURL'].'/modules/'.$_SESSION[$guid]['module']."/role_manage_deleteProcess.php?gibbonRoleID=$gibbonRoleID");
echo $form->getOutput();

Search Form

php
$form = Form::create('search', $_SESSION[$guid]['absoluteURL'].'/index.php', 'get');

$form->addHiddenValue('q', '/modules/'.$_SESSION[$guid]['module'].'/applicationForm_manage.php');

$row = $form->addRow();
    $row->addLabel('search', __('Search For'))->description(__('Preferred, surname, username.'));
    $row->addTextField('search')->setValue($search);

$row = $form->addRow();
    $row->addSearchSubmit($gibbon->session, __('Clear Search'));

echo $form->getOutput();

Edit Forms

At the end of a form, you can call loadAllValuesFrom() with an array of values, and it will use the keys in that array to call setValue on each field in the form. This is the easiest way to load a record into a form for editing. Dates loaded this way are automatically converted from the YYYY-MM-DD format into the system locale.

php
$form->loadAllValuesFrom($values);

Sample Form Inputs

php
// Text
$row = $form->addRow();
    $row->addLabel('name', __('Name'))->description(__('Description'));
    $row->addTextField('name')->required()->maxLength(10);

// Number
$row = $form->addRow();
    $row->addLabel('capacity', __('Capacity'));
    $row->addNumber('capacity')->maxLength(5)->decimalPlaces(0);

// Readonly
$row = $form->addRow();
    $row->addLabel('value', __('Label'))->description(__('Description'));
    $row->addTextField('value')->readonly()->setValue($value);

// Text Area
$row = $form->addRow();
    $row->addLabel('comment', __('Comment'));
    $row->addTextArea('comment')->setRows(8);

// Text Area - Full Width
$row = $form->addRow();
    $column = $row->addColumn();
    $column->addLabel('medicalInformation', __('Medical Information'))->description(__('Please indicate any medical conditions.'));
    $column->addTextArea('medicalInformation')->setRows(5)->setClass('fullWidth');

// Rich Text Editor
$row = $form->addRow();
    $column = $row->addColumn();
    $column->addLabel('body', __('Description'));
    $column->addEditor('body', $guid)->setRows(15)->showMedia()->setValue($body);

// Checkbox
$row = $form->addRow();
    $row->addLabel('value', __('Label'))->description(__('Description'));
    $row->addCheckbox('value')->fromArray($yearGroups)->checked($checked);

// Select
$row = $form->addRow();
    $row->addLabel('value', __('Label'));
    $row->addSelect('value');

// SQL Select
$sql = "SELECT gibbonScaleID as value, name FROM gibbonScale WHERE (active='Y') ORDER BY name";
$row = $form->addRow();
    $row->addLabel('value', __('Label'))->description(__('Description'));
    $row->addSelect('value')->fromQuery($pdo, $sql)->placeholder();

// Setting Select
$types = getSettingByScope($connection2, 'School Admin', 'facilityTypes');
$row = $form->addRow();
    $row->addLabel('type', __('Type'));
    $row->addSelect('type')->fromString($types);

// Alerts
$form->addRow()->addAlert($policy, 'warning');

// YesNo
$row = $form->addRow();
    $row->addLabel('value', __('Label'))->description(__('Description'));
    $row->addYesNo('value');

// URL
$row = $form->addRow();
    $row->addLabel('website', __('Website'))->description(__('Include http://'));
    $row->addURL('website')->maxLength(255);

// Date
$row = $form->addRow();
    $row->addLabel('currentDate', __('Date'))->description($_SESSION[$guid]['i18n']['dateFormat'])->prepend(__('Format:'));
    $row->addDate('currentDate')->setValue(Format::dateConvert($currentDate))->required();

// Time
$row = $form->addRow();
    $row->addLabel('timeIn', __('Time In'));
    $row->addTime('timeIn')->setValue(date('H:i'));

// Table

$table = $form->addRow()->addTable()->addClass('colorOddEven');

$header = $table->addHeaderRow();
$header->addContent(__('Name'));
$header->addContent(__('Role'));

$row = $table->addRow();
$row->addContent();
$row->addContent();
$row->addContent();

Finish & Output Form

php
$row = $form->addRow();
    $row->addFooter();
    $row->addSubmit();
    // OR $row->addSearchSubmit($gibbon->session);

echo $form->getOutput();

Database

Add this namespace, and then use the setFactory method to add the DatabaseFormFactory.

use Gibbon\Forms\DatabaseFormFactory;

$form->setFactory(DatabaseFormFactory::create($pdo));

Database Inputs

See the DatabaseFormFactory class for the full list.

php
// SELECT - Example: all spaces
$row = $form->addRow();
    $row->addLabel('value', __('Label'));
    $row->addSelectSpace('value');

// SELECT All Users
$row = $form->addRow();
    $row->addLabel('gibbonPersonID', __('Users'));
    $row->addSelectUsers('gibbonPersonID');

// SELECT All Staff
$row = $form->addRow();
    $row->addLabel('staff', __('Staff'));
    $row->addSelectStaff('staff')->selectMultiple();

// SELECT All Students
$row = $form->addRow();
    $row->addLabel('gibbonPersonID', __('Child\'s Name'));
    $row->addSelectStudent('gibbonPersonID', $_SESSION[$guid]['gibbonSchoolYearID'])->selectMultiple();

Caught a mistake or want to improve the documentation? You are welcome to contribute! Look for the edit link on each page.