Reading list Switch to dark mode

    Symfony Validation Groups

    Updated 15 March 2016

    Symfony Validation Groups – In Symfony, normally we can validate user submitted values against our entities through these ways – Annotation, Yaml, PHP etc. Example validation.yml for product entity

    Webkul\DemoBundle\Entity\Product:
        properties:
            name:
                - NotBlank: { message: "product.name.not_blank" }   
                - Length:
                    max: 50
                    maxMessage: "product.name.length"
            description:
                - Length:
                    max: 200
                    maxMessage: "product.description.length"

    But when a from or entity used more than one places to create form like Product in any e-commerce

    • At time of product add you would never validate product id because it isn’t created yet.
    • But at time of edit product, you do.

    Then how is form/ entity going to tell Symfony that we need to validate id or not in current request ? For this we use Validation Groups . We declare validation groups in our from and with properties declared in validation.yml.

    Controller (It will be array)

    $form = $this->createForm(new Product(), $product , array(
                                        'validation_groups' => array('productEdit')
                                       )
                                     );
    

    Yaml (Let’s say you added one validation group for product create form – “product”)

    Searching for an experienced
    Symfony Company ?
    Find out More
    Webkul\DemoBundle\Entity\Product:
        properties:
            productId: 
                - NotBlank: { groups: [productEdit] }
            name:
                - NotBlank: { groups: [product, productEdit] }   
                - Length:
                    max: 50
                    maxMessage: "product.name.length"
                    groups: [product, productEdit]
            description:
                - Length:
                    max: 200
                    maxMessage: "product.description.length"
                    groups: [product, productEdit]
    

    Now productId validation is enabled only for Product Edit form.

    Framework used – Symfony 2.7, Official Doc

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    1 comments

  • sk1
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home