I have a form to create a new entity. That entity has a collection of other entities that are also entered in that form.
I want to use the validation options of the
Just add annotation assert like following
/**
* @Assert\Count(
* min = "1",
* minMessage = "You must specify at least one"
* )
* @Assert\Valid
*
*/
protected $name_of_collection_property;
I use this:
use Symfony\Component\Validator\ExecutionContextInterface;
class Person
{
...
/**
* @ORM\OneToMany(targetEntity="Address", mappedBy="owner", cascade={"persist", "detach"})
*/
protected $addressList;
....
/**
* @Assert\Callback
*/
public function validate(ExecutionContextInterface $context)
{
if (!$this->getAddressList()->count()) {
$context->addViolationAt(
'addressList',
'You must add at least one address',
array(),
null
);
}
}
}
http://symfony.com/doc/current/reference/constraints/Callback.html
You could also use the "Valid" constraint with the "All" constraint :
/**
* @ORM\OneToMany(targetEntity="Address", mappedBy="owner", cascade={"persist", "detach"})
* @Assert\All({
* @Assert\Valid
* })
*/
protected $addressList;
I had the same problem but was solved with:
/**
* @ORM\OneToMany(
* targetEntity="Entity",
* mappedBy="mappedEntity",
* cascade={"persist" , "remove"}
* )
* @Assert\Valid
*/