This library provides the Validate
constraint for the
Symfony Validator Component.
This constraint behaves similar to the built-in Valid
constraint, but respects
the groups
option. Additionally, it adds an option to specify the validation
groups to target on the embedded object(s).
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require fluoresce/validate-embedded
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
The following examples assume you are using the full Symfony framework, though this package can be used in any project that has the Symfony Validator Component available
This example shows an Author
which has a collection of Book
s. When
validation is run for group1
on Author
, it will cascade to all embedded
Book
instances.
The behaviour here is slightly different to the standard Valid
constraint, as
validation of the Book
instances is run with the default group.
<?php
use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;
class Author
{
/**
* @var Book[]
* @Fluoresce\Validate(groups={"group1"});
*/
private $books;
}
<?php
use Symfony\Component\Validator\Constraints as Assert;
class Book
{
/**
* @var string
* @Assert\NotBlank()
*/
private $title;
}
Imagine we want to specify different validation groups to be run on the Book
instances. We can target these by specifying them in the Validate
annotation.
<?php
use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;
class Author
{
/**
* @var Book[]
* @Fluoresce\Validate(embeddedGroups={"bookgroup1"});
*/
private $books;
}
<?php
use Symfony\Component\Validator\Constraints as Assert;
class Book
{
/**
* @var string
* @Assert\NotBlank(groups={"bookgroup1"})
*/
private $title;
}
Now whenever an Author
instance is validated, the embedded Book
s will be
validated with validation group bookgroup1
.
This example combines behaviour from the previous ones to show how it operates together.
<?php
use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;
class Author
{
/**
* @var Book[]
* @Fluoresce\Validate(groups={"group1"}, embeddedGroups={"bookgroup1"});
*/
private $books;
}
<?php
use Symfony\Component\Validator\Constraints as Assert;
class Book
{
/**
* @var string
* @Assert\NotBlank(groups={"bookgroup1"})
*/
private $title;
}