Symfony Forms Assert

У меня есть класс Event, который имеет поле, подобное этому:

class Event
{
......
/**
* @var datetime $date
*
* @ORM\Column(name="date_debut_inscri", type="datetime")
* @Assert\GreaterThanOrEqual("today UTC")
*/
protected $dateDebutInscri;
......
}

Это поле скрыто, когда установлен флажок и в контроллере установлено значение null, проблема заключается в том, что когда это поле скрыто, по-прежнему отображается сообщение об ошибке Assert, и я не могу отправить форму

Я хочу, чтобы он был пустым по умолчанию, и если пользователь решил заполнить это поле, оно должно быть больше или равно текущей дате

Мне было интересно, могу ли я сделать что-то вроде:

* @Assert\GreaterThanOrEqual("today UTC") OR @Assert\IsNull()

где требуется только один из двух утверждений, чтобы быть правдой

PS: «dateDebutInscri» по-французски означает дату открытия надписи на мероприятии.

0

Решение

Я смог решить эту проблему с помощью GroupSequence, это объясняется здесь:

http://symfony.com/doc/current/validation/sequence_provider.html

Добавил немного кода в мой класс Event, и все хорошо

use Symfony\Component\Validator\GroupSequenceProviderInterface;

/**
* @ORM\Table(name="event")
* @ORM\Entity(repositoryClass="AppBundle\Repository\EventRepository")
* @Assert\GroupSequenceProvider
*/
class Event implements GroupSequenceProviderInterface
{
......
/**
* @var datetime $date
*
* @ORM\Column(name="date_debut_inscri", type="datetime")
* @Assert\GreaterThanOrEqual("today UTC", groups = {grp1})
*/
protected $dateDebutInscri;
......

public function getGroupSequence(){
$groups = ['Default', 'Event'];

if(!$this->getMyCheckBox())
{
$groups[] = 'grp1';
}
return $groups;
}
}
0

Другие решения

Других решений пока нет …