Yesterday we released the first beta of patForms, following our second alpha release. There has been a lot of activity around patForms lately, and most notably a new lead developer has joined the team: Sven Fuchs. Among other things he has added a complete layer that allows patForms propel integration, and has contributed new renderers.
Quick overview of changes:
- A lot of bugfixes, subpackages more stable
- Propel integration
- New renderers: Smarty, PHPTal and HTML_Template_Flexy
- Form namespaces
- New rules and storages
- Enhanced parser
- Minor enhacements and new features
With all the bugfixes and enhancements in this new version, the whole package has become a lot more stable and along with the new functionality has taken a step more towards making working with forms fun

We are planning to make a first stable release in october, so we need your help in weeding out the leftover bugs!
If you are using patForms in your projets, please upgrade and test the new version (please see the section on upgrading further down in this post for additional notes). If you do not know patForms yet, I think this is a good time to discover the projet. With the extensive and comprehensive examples collection, you can start working with it in a breeze!
You can report any bugs or feature requests in our new Trac-powered project manager, where you can also find a documentation wiki.
[1]
Download via our PEAR channel server
[2]
Download via the traditional download page
[3]
Project manager (bugs, feature request, wiki)
[4]
Online examples collection
Notes on upgrading
If you are already using a patForms beta, you way have to change a few things in your script as we have a few BC breaks in some subpackages. Nothing extraordinary, and as this new release is our first beta the API stands as it is and will not change anymore.
Changelog
The changelog is also available on our channel server, but for convenience I have included the complete list of changes since our v0.9.0a2 release here:
patForms main:
- Added "namespace" support to patForms and patForms_Elements (closing ticket #129) (Sven Fuchs)
- Added a class patForms_Definition: base class for xml based form definitions (Sven Fuchs)
- Removed patForms_FormatChecker and replaced it with rules (closing ticket #156) (schst)
- Added an event onValidate to patForms and registered storages to listen to this event. This allows patForms_Storage containers to do their own validation, e.g. for unique keys. (This closes bug #130) (Sven Fuchs)
- Cleaned up event-management and added new onRender() event (schst)
- Avoid multiple autoValidate checks in the same request (schst)
- Changed datasources to receive the element (closing ticket #151) (schst)
- Added datasource for country-selection (schst, argh)
- Added createDatasource() method to patForms (schst)
- patErrors triggered by event listeners will now bubble up to the user (schst)
- Check, whether custom locale file exists prior to loading it (schst)
- Fixed several PHP 4.4.0 notices (schst)
- Added the getRenderer() method (argh)
Elements
- Fixed bug #87: Passwords will not be sent back to the browser if the "resendpasswd" attribute is not set to "yes" (schst)
- Fixed bug #148: Enum/RadioGroup/Set/Combobox Elements now accept retrieving values from a datasource additionally to the already defined value set (argh)
- Fixed bug #147: Enum/RadioGroup/Set/Combobox Elements now support setting a 'disabled' attribute for values (argh)
- Fixed bug #150: Date day element displays 32 days (argh)
- Fixed bug #172: modified behavior of the setValue for the set element so that you may pass either a string for a single selected value, or an array with a list of selected entries (argh)
- Fixed bug #149: Non-required date elements are validated against min and max dates (argh)
- Fixed bug #179: Add errormanagment to patForms_Element::serialize*() (argh)
- Fixed bug #174: New method removeRule() is used to remove the previously added rule when usign the format attribute (schst)
- Fixed bug #171: Element_Date accepts invalid dates (argh)
- Fixed bug #182: Switch element does not check for the correct value (argh)
Rules
- Added several patForms_Rules to match Propel Validator classes and enable client side validation for these. New rules are: MaxLength, MinLength, MaxValue, MinValue, Match, NotMatch, ValidValues (Sven Fuchs)
- Added new rule: AnyRequired (schst)
- Fixed bug #173: translated missing french strings in patForms_Rule_URL as well as other rules (argh)
- Added new rule that prohibits updating entries in a storage (Frank Kleine)
- Added new rule that prohibits adding entries in a storage (schst)
- Fixed bug #187: Storage* rules need french translations (argh)
Storages
- Allowed the use of the DB storage container to only add entries (schst)
- Added new feature to the DB storage container to provide additional values for new entries (schst)
- Fixed the DB storage container to work with SQLite (schst)
- Fixed bug in storage containers that did not provide the onValidate() method (schst)
- Added new "Mail" storage (schst)
- Fixed bug #140 (missing check for database error) (schst)
- Fixed bug #177 (minor bugs in CSV storage) (schst)
Clientside features
- Changed scripts collection mechanism in patForms, patForms_Element and patForms_Rule for clientside validation. (This closes bug #133) (Sven Fuchs)
Propel Integration
- Added a class patForms_Definition_Propel: definition that either populates itself from a Propel ObjectPeer class and writes itself to an xml file OR reads an existing xml file and populates itself from it, when this file exists (Sven Fuchs)
- Added a class patForms_Creator_Definition: creates a patForm instance and populates properties, elements and rules from a patForms_Definition instance (Sven Fuchs)
- Added a class patForms_Datasource_Propel: used to populate data to form elements for foreign key/related tables from a Propel ObjectPeer. (Sven Fuchs)
- Added a class patForms_Storage_Propel: implements the patForms_Storage interface to integrate with a Propel object peer. (Sven Fuchs)
Renderer
- Changed patForms_Renderer_Array to not include patForms_Datasource objects in the results array (This closes bug #131) (Sven Fuchs)
- Added new patTemplate Renderer (schst)
Parser
- Edited patForms_Parser "sourcefile could not be read"-message to include some additional useful debugging information (argh)
- Added filename to patForms_Parser error message (schst)
- patForms_Parser_HTML now extracts attributes of the <form/> tag (schst)
- Allow more than one element with the same name (schst)
- Fixed bug with spaces in attribute values (schst)
- Added value-namespace support via the namespace attribute of the <patForms:Form/> tag (schst)
- Added event support via attributes of the <patForms:Form/> tag (schst)