2017 © Pedro PelĆ”ez
 

library formista

A light form API

image

evista/formista

A light form API

  • Thursday, November 5, 2015
  • by balintsera
  • Repository
  • 1 Watchers
  • 0 Stars
  • 21 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

formista

Latest Version on Packagist ![Software License][ico-license] Build Status ![Coverage Status][ico-scrutinizer] Quality Score ![Total Downloads][ico-downloads], (*1)

This is where your description should go. Try and limit it to a paragraph or two, and maybe throw in a mention of what PSRs you support to avoid any confusion with users and contributors., (*2)

Install

Via Composer, (*3)

``` bash $ composer require evista/formista, (*4)


## Usage `

Simple form

To create a form, simply add a new class with any name that extends BaseForm class:
```php use Evista\Formista\ValueObject\FormField; use Evista\Formista\Form\BaseForm; class ExampleForm extends BaseForm { //... } ``` This class is not very useful without form elements. To add any field, for example a hidden input you have to implement a class method, called&nbsp;generateFields().&nbsp; ```php public function generateFields(){ // Name field $name = new FormField(FormField::TYPE_TEXT_INPUT); $name ->setName('name') ->setAttributes(['placeholder' => 'Minta JƔnos', 'id' => 'name']); $this->formFields['name'] = $name; } ``` Now your ExampleForm has an input field, called name. If you want do display the form, just use this class: ```php $form = new ExampleForm(); print '<input type="'.$form->getField('name')->getType().'" name="'.$form->getField('name')->getName().'" value="'.$form->getField('name')->getValue().'"/>'; ```
After the user posts this to the server, you can rebuild the form the same way as before:
```php $form = new ExampleForm(); ``` But this time every field value will be populated with what the user sent. ```php $form->getField('name')->getValue() // BĆ”lint ``` Itā€™s not just more convenient but makes your code more readable and conceivable. But Fom API can do even more: you can set up validations; ```php // Phone $phone = new FormField(FormField::TYPE_TEXT_INPUT); $phone ->setName('phone') ->setAttributes(['placeholder' => '+36 30 111 2222', 'id' => 'phone']) ->setSanitizationCallback(function($value){ // only numbers, whitespaces and + return trim(preg_replace($this->phoneNumberPattern, '', $value)); }) ->setValidationCallback( function($value){ // Length constrain if(strlen($value)<5){ return 'Telephone number is not valid'; } // Regex constrain if(preg_match($this->phoneNumberPattern, $value)){ return 'Telephone number is not valid'; } // False means it's OK! return false; } ) ->setMandatory(true); $this->formFields['phone'] = $phone; ``` With setValidationCallback() method you can define a function that gets the submitted value as $value. Returning false means that thereā€™s no problem with the submitted data. The form will run all validations on all input when you call the validate() method.&nbsp; ```php $form->validate(); ``` Any field can be set mandatory with the setMandatory() method.
Validation is not automatic so donā€™t forget to call the validate() method.
```php $form = new ExampleForm(); if(count($errors = $form->validate()) > 0){ //something is wrong, the messages are in the $errors array } // It's valid yeah ``` You can set santitization callback which will be called autmoatically when you instantiate a form. Csrf protection is fully automatic also so you donā€™t need to do anything.

Ajax forms


<br> ## Change log Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. ## Testing ``` bash $ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details., (*5)

Security

If you discover any security related issues, please email sera.balint@e-vista.hu instead of using the issue tracker., (*6)

Credits

License

The MIT License (MIT). Please see License File for more information., (*7)

The Versions

05/11 2015

dev-master

9999999-dev https://github.com/serabalint/formista

A light form API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

The Development Requires

form formista