Provides methods to create, validate and render HTML forms in PHP.

v2.3.2 2023-11-02 12:09 UTC

This package is auto-updated.

Last update: 2024-02-02 12:37:56 UTC


Build Status

Static Analysis

This is a repository for PEAR HTML_QuickForm2 package that has been migrated from PEAR SVN.

HTML_QuickForm2 provides methods to create, validate and render HTML forms. It is a PHP5 rewrite of PEAR HTML_QuickForm and related packages.


  • Supports all form elements defined in HTML4, provides several custom elements. Support for HTML5 form elements is planned.
  • Server-side and client-side validation, several common rules provided. Validation rules can be combined with 'and' and 'or' for complex validation scenarios. Client-side validation can be run on changing the form field and on submitting the form.
  • Client-side validation and Javascript-backed elements use a small self-contained JS library, there is no dependency on JS frameworks.
  • Multipage forms (tabbed forms and wizards) are possible.
  • Pluggable elements, rules, renderers and renderer plugins.

Please report issues via the PEAR bug tracker or Github issues.

Pull requests are welcome.


The package may be installed either with PEAR

$ pear install HTML_QuickForm2

or with composer

$ composer require pear/html_quickform2

Since release 2.1 composer installation relies completely on autoloading and does not contain require_once calls or use include-path option.

Basic usage

require_once 'HTML/QuickForm2.php'; // Only when installed with PEAR

$form = new HTML_QuickForm2('tutorial');

// Set defaults for the form elements
$form->addDataSource(new HTML_QuickForm2_DataSource_Array([
    'name' => 'Joe User'

// Add some elements to the form
$fieldset = $form->addElement('fieldset')->setLabel('QuickForm2 tutorial example');
$name = $fieldset->addElement('text', 'name', ['size' => 50, 'maxlength' => 255])
                 ->setLabel('Enter your name:');
$fieldset->addElement('submit', null, ['value' => 'Send!']);

// Define filters and validation rules
$name->addRule('required', 'Please enter your name');

// Try to validate a form
if ($form->validate()) {
    echo '<h1>Hello, ' . htmlspecialchars($name->getValue()) . '!</h1>';

// Output the form
echo $form;

Additional examples are in the docs/examples directory.

Documentation available on PEAR website

Generated API documentation for the current release is also there.

Testing, Packaging and Installing (Pear)

To test, run

$ phpunit tests/

after installing dependencies with composer. You can also test the installed package with

$ phpunit [PEAR tests dir]/HTML_QuickForm2

Since PEAR package needs its require_once statements re-enabled, please run the helper file before packaging and installing

$ php pear-package-helper.php

Then to build, simply

$ pear package .pear-package/package.xml

To install from scratch

$ pear install .pear-package/package.xml

To upgrade

$ pear upgrade -f .pear-package/package.xml