PHP Classes

File: examples/ColumnForm.php

Recommend this page to a friend!
  Classes of Stefan Kientzler   Complex PHP Form Design and Generator   examples/ColumnForm.php   Download  
File: examples/ColumnForm.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Complex PHP Form Design and Generator
Display and process complex HTML forms HTML forms
Author: By
Last change: added setSelectOptions() to FormSelect / FormRadioGroup
Date: 2 years ago
Size: 4,491 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);

require_once
'../autoloader.php';

use
SKien\Config\JSONConfig;
use
SKien\Formgenerator\ArrayFormData;
use
SKien\Formgenerator\FormButton;
use
SKien\Formgenerator\FormButtonBox;
use
SKien\Formgenerator\FormCheck;
use
SKien\Formgenerator\FormDate;
use
SKien\Formgenerator\FormDiv;
use
SKien\Formgenerator\FormFlags;
use
SKien\Formgenerator\FormGenerator;
use
SKien\Formgenerator\FormHeader;
use
SKien\Formgenerator\FormImage;
use
SKien\Formgenerator\FormInput;
use
SKien\Formgenerator\FormLine;
use
SKien\Formgenerator\FormRadioGroup;

$strTheme = './MSO-Theme/';

$oConfig = new JSONConfig($strTheme . 'FormGenerator.json');

$dtTo = new DateTime();
$dtTo->setTimestamp(time() + 3600);
$aData = [
   
'username' => 'Stefanius',
   
'strLastname' => 'Mustermann',
   
'strFirstname' => 'Max',
   
'strStreet' => 'Hammerstraße',
   
'strPostcode' => '12345',
   
'strCity' => 'Musterstadt',
   
'strGender' => 'm',
   
'dateDoB' => '1974-07-23',
   
'timeAvailableFrom' => time(),
   
'timeAvailableTo' => $dtTo,
   
'fltDue' => 1904,
   
'strCatColor' => '#B0BED0',
   
'fltWeight' => 71.3,
   
'strImage' => '/packages/Formgenerator/examples/public/images/sample1.jpg',
   
'bBoardMember' => true,
];

$oData = new ArrayFormData($aData);

$oFG = new FormGenerator($oData);
$oFG->setConfig($oConfig);
$oFG->setAction('formaction.php');
$oFG->setTarget('_blank');

$oFG->setColWidth([25, 75], '%');

$oFG->add(new FormHeader('Personnel data sheet', 1));

$oCol1 = $oFG->addDiv(70, FormDiv::LEFT);
$oFS = $oCol1->addFieldSet('Name and Adress', 'col1');
$oFL = $oFS->addLine('Lastname:');
$oFL->add(new FormInput('strLastname', '100%', FormFlags::MANDATORY));
$oFL = $oFS->addLine('Firstname:');
$oFL->add(new FormInput('strFirstname', '100%'));
$oFL = $oFS->addLine('Street:');
$oFL->add(new FormInput('strStreet', '100%'));
$oFL = $oFS->addLine('Postcode, City:');
$oFL->setColWidth([25, 25, 50], '%');
$oFL->add(new FormInput('strPostcode', '90%'));
$oFL->add(new FormInput('strCity', '100%'));
$oFL = $oFS->addLine(FormLine::HR);
$oFL = $oFS->addLine('Gender:');
$oCtrl = new FormRadioGroup('strGender', FormFlags::HORZ_ARRANGE);
$oCtrl->setSelectOptions(['' => '', 'male' => 'm', 'female' => 'f', 'diverse' => 'd']);
$oFL->add($oCtrl);
$oFL = $oFS->addLine('Birthday:');
$oFL->add(new FormDate('dateDoB', FormFlags::ADD_DATE_PICKER));
$oFL = $oFS->addLine();
$oFL->add(new FormCheck('bBoardMember', 0, 'member of the board'));

$oCol2 = $oFG->addDiv(30, FormDiv::LEFT);
$oFS = $oCol2->addFieldSet('Portrait', 'col2');
$oFS->setColWidth([100]);

// Right col containing an image to display portrait.
// This consists of:
// - the image itself, that
// * is bound to a hidden input field that contains the imagepath as value
// * has a onclick handler to call the filebrowser on the server
// * holds a default image to display, if no image is set
// - a additional button [Select] to call the filebrowser
// - a additional button [Reset] to reset the image to default and clear the associated input field

$strBrowseServer = "browseServer('strImage', 'imgImage', '/images')";
$oFL->add(new FormInput('strImage', 0, FormFlags::HIDDEN | FormFlags::BROWSE_SERVER));
$oImg = new FormImage('imgImage', '', $strBrowseServer, FormFlags::ALIGN_CENTER);
$oImg->setDefault('.\public\images\contact_empty.png');
$oImg->bindTo('strImage');
$oImg->setTitle('click to select an image');
$oFS->add($oImg);

$oFL = $oFS->addLine();
$oFL->setColWidth([0, 50, 50]);
$oFL->add(new FormButton('btnImageSelect', 'Select', $strBrowseServer, FormFlags::ALIGN_CENTER));
$oFL->add(new FormButton('btnImageReset', 'Reset', "resetElement('imgImage')", FormFlags::ALIGN_CENTER));

$oFG->add(new FormButtonBox(FormButtonBox::SAVE | FormButtonBox::DISCARD, FormFlags::ALIGN_RIGHT));

$oFG->adjustColHeight('col1', 'col2');

// generate HTML-markup and JS configuration data
$strFormHTML = $oFG->getForm();
$strStyleFromPHP = $oFG->getStyle();
$strConfigFromPHP = $oFG->getScript();
?>
<html>
<head>
<link type="text/css" rel="stylesheet" href="<?= $strTheme; ?>FormGenerator.css">
<style>
body
{
    background-color: #777;
    width: 100%;
    padding-top: 20px;
}

<?php echo $strStyleFromPHP; ?>
</style>
<script type="text/javascript" src="../script/FormGenerator.js"></script>
<script>
<?php echo $strConfigFromPHP; ?>
</script>
</head>
<body>
<div style="width:600px; margin: 0px auto; background-color: transparent;">
<?php echo $strFormHTML; ?>
</div>
</body>
</html>