没有为约束SymfonyComponentValidatorConstraintsTime配置默认选项


No default option is configured for constraint SymfonyComponentValidatorConstraintsTime

我试图将类型Time的时间属性设置为Doctrine实体Availability

  class Availability{
       /**
        * @var int
        *
        * @ORM'Column(name="id", type="integer")
        * @ORM'Id
        * @ORM'GeneratedValue(strategy="AUTO")
        */
       private $id;
       /**
        * @ORM'Column(name="start_time", type="time", nullable=true)
        * @Assert'Time(message = "wrong time format")
        */
       private $startTime;
       /**
        * @ORM'Column(name="end_time", type="time", nullable=true)
        * @Assert'Time(message = "wrong time format")
        */
       private $endTime;
    }

在控制器中,我通过创建Time对象来设置时间:

    use Symfony'Component'Validator'Constraints'Time;
    /////
    $availability = new Availability();
    $availability->setStartTime(new Time('18:00:00'));
    $availability->setEndTime(new Time('21:00:00'));

有这个错误

没有为约束配置默认选项Symfony'组件'验证器'约束'时间(500内部服务器错误)

你在评论中提到的"自动添加"有时会误导你,让你陷入糟糕的境地,尤其是当你刚刚开始学习一些东西的时候。

startTimeendTime类型为time, Doctrine定义时间字段如下:

time:将SQL time映射到PHP DateTime对象的类型。

所以你需要传递一个DateTime对象给你的setter,而不是一个Time约束。像这样的操作可能对您有用:

$availability = new Availability();
$availability->setStartTime(new 'DateTime('now'));
$availability->setEndTime(new 'DateTime('another date')); // <- change another date