JsFormValidatorBundle

by formapro

The Javascript validation for Symfony 2, 3 and 4 forms

128 Stars 55 Forks Last release: 6 months ago (1.6.1) MIT License 272 Commits 19 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

FpJsFormValidatorBundle

Build Status Total Downloads

This module enables validation of the Symfony 4 or later forms on the JavaScript side. It converts form type constraints into JavaScript validation rules.

If you have Symfony 4.* - you need to use Version 1.6.x-dev

If you have Symfony 3.1.* - you need to use Version 1.5.*

If you have Symfony 3.0.* - you need to use Version 1.4.*

If you have Symfony 2.8.* or 2.7.* - you need to use Version 1.3.*

If you have Symfony 2.6.* or less - you need to use Version 1.2.*

1 Installation

1.1 Download FpJsFormValidatorBundle using composer

Run in terminal:

bash
$ composer require "fp/jsformvalidator-bundle":"dev-master"
Or if you do not want to unexpected problems better to use exact version.
bash
$ composer require "fp/jsformvalidator-bundle":"v1.6.*"

1.2 Enable javascript libraries

There are two ways to initialize javascript's files for this library. You can create a new entry in the webpack or import the main file into your javascript.

1.2.1 Add FpJsFormValidatorBundle to webpack.config.js

Encore
    ...
    .addEntry('app', './assets/js/app.js')
+   .addEntry('FpJsFormElement', './vendor/fp/jsformvalidator-bundle/Fp/JsFormValidatorBundle/Resources/public/js/FpJsFormValidatorWithJqueryInit.js')
    ...
    .configureBabel(null, {
        useBuiltIns: 'usage',
        corejs: 3,
    })
;

And include new entry in your template

diff
+   {{ encore_entry_script_tags('FpJsFormElement') }}
    {{ encore_entry_script_tags('app') }}

1.2.2 Import FpJsFormValidatorBundle in your main javascript

  import $ from 'jquery';
+  import 'path-to-bundles/fpjsformvalidator/js/FpJsFormValidator';
+  import 'path-to-bundles/fpjsformvalidator/js/jquery.fpjsformvalidator';

1.2.3 Use inits in your template

{% block javascripts %}
+   {{ js_validator_config() }}
+   {{ init_js_validation() }}
{% endblock %}

1.4 Add routes

If you use the UniqueEntity constraint, then you have to include the next part to your routing config: app/config/routing.yml ```yaml

...

fpjsformvalidator: resource: "@FpJsFormValidatorBundle/Resources/config/routing.xml" prefix: /fpjsformvalidator ``` Make sure that your security settings do not prevent these routes.

2 Usage

After the previous steps the javascript validation will be enabled automatically for all your forms.

  1. Disabling validation
  2. If your forms are placed in sub-requests
  3. If you need to initialize JS validation for your forms separately, or by some event, in this case you need to follow these steps instead of the chapter 1.3

3 Customization

Preface

This bundle finds related DOM elements for each element of a symfony form and attach to it a special object-validator. This object contains list of properties and methods which fully define the validation process for the related form element. And some of those properties and methods can be changed to customize the validation process.

If you render forms with a some level of customization - read this note.

  1. Disable validation for a specified field
  2. Error display
  3. Get validation groups from a closure
  4. Getters validation
  5. The Callback constraint
  6. The Choice constraint. How to get the choices list from a callback
  7. Custom constraints
  8. Custom data transformers
  9. Checking the uniqueness of entities
  10. Form submit by Javasrcipt
  11. onValidate callback
  12. Run validation on custom event
  13. Collections validation

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.