繁体   English   中英

Symfony表格断言

[英]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错误消息仍然出现,这使我无法提交表单

我希望它默认为null,并且如果用户选择填写此字段,则该字段必须大于或等于当前日期

我想知道我是否可以做类似的事情:

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

仅要求两个断言之一为真

PS:“ dateDebutInscri”为法语,表示活动的题字打开的日期

我能够使用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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM