bic / form-validation
Let's take the form validation logic and apply it for js, other php scripts, an API...
Installs: 1 072
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 1
Forks: 0
Open Issues: 1
Type:symfony-bundle
Requires
- php: >=5.3.3
- jms/serializer-bundle: >=0.11
- symfony/form: >=2.3.0
- symfony/framework-bundle: >=2.3.0
- symfony/validator: >=2.3.0
This package is not auto-updated.
Last update: 2025-05-20 04:41:07 UTC
README
The objective of this bundle is to create a abstract and generic object of the form information to parse it to another tools (Javascript or maybe PHP tools).
For instance: It can help you to addapt this information to javascript validation logic for the forms.
##Dependencies
Check composer.json of the current version.
##Instalation
####Composer
composer require bic/form-validation
####Enable the bundle
//... new Bic\FormValidationBundle\BicFormValidationBundle() //...
##How it works
####Create the form
// form Data models $formData = array( new Form\Model\Register(), new Form\Model\Document() ); // form builder $formBuilder = $this->container ->get('form.factory') ->createNamedBuilder('form', 'form', $formData) ->add('phone', 'text') ->add('password', 'password') ->add('document', new Form\Type\DocumentType()) ->add('submit', 'submit'); // get form from form builder // (http://www.interesarte.com/wp-content/uploads/2013/05/willsmith.jpg) $form = $formBuilder ->getForm() ->handleRequest($request);
####Extract the validation
$formValidation = $this->get('bic_form_validation.form_validation'); //returns FormValidation object $formValidation->extractValidation($form); //returns fields array $formValidation->getFields(); //returns json object $formJson = $formValidation->toJson();
####Return it to the view
return array( //... 'form_validation' => $formJson, //... );
And do whatever you want with it.
##json form example
[ { constraints: [ "Default": [ { "message": "This value should not be null.", "groups": [ "Default", "Model" ], "class": "Symfony\\Component\\Validator\\Constraints\\NotNull" } ] ], dataClass: "Bic\Voucher\EntityBundle\Entity\Category", options: { choices: { m: "Male", f: "Female" }, required: false, empty_value: "Choose your gender", empty_data: null }, value: '', pathName: [ "name", "bic_voucher_entitybundle_category" ], fullPathName: "bic_voucher_entitybundle_category[name]", type: "choice", validationGroups: [ ] }, { constraints: [ ], dataClass: "Bic\Voucher\EntityBundle\Entity\Category", options: { required: false }, value: '', pathName: [ "miniDescription", "bic_voucher_entitybundle_category" ], fullPathName: "bic_voucher_entitybundle_category[miniDescription]", type: "textarea", validationGroups: [ ] } ]
##Last changes
- Added entity results from the FormView object (dataEntityChoice property)
- Added JMS Serializer as dependency to get the entity type value and parse it to json
- Added value property. It has the value of the field.
- Removed the possibility to get the class name from the data passed
- Provide better and complete json example (from TODO)
- Create associated js parsers like ParsleyJs and js form generator script. (Out of project) (from TODO)
- FIXED - Does not work with complex forms. (from Known errors)
- More unit testing (from TODO)
- General info of form added
- Created first unit testing to check the bundle is working with complex forms
- Fix known errors (from TODO)
- Parent forms not avoided
- Submit buttons not avoided
- Added more form information
- Removed jQValidation generator
- Removed generator folder and strategy. Now the parsers will be aplied externally.
##Related resources
###Js form creator It creates the form from the json information. https://github.com/bichotll/Symfony-FormValidationBundle-js-parser
###Js ParsleyJS parser It applies the ParsleyJS validation from the Symfony-FormValidationBundle-js-parser form object or existing one using FormValidationBundle object https://github.com/bichotll/Symfony-FormValidationBundle-ParsleyJS-parser
##Wiki
##TODO
- Proper unit test. Until the next change I will not check the responses programatically.
- Unit test using a mock of container, etc.
- Test entity type.