Symfony 3.4:如何验证不属于绑定到表单的实体的"external"值



我对symfony很陌生,对PHP 7还不是很有经验。

我们有一个活动数据库,活动发生,组织者必须提交报告。

eventreport是单独的实体类。report对关联的event一无所知,除了它的ID。

如果在事件发生之前提交报告,则验证应失败。 但是,我不知道如何在验证期间访问eventeventdate属性。

我们通过注释定义约束,并且report实体中已经存在回调约束。

我什至不确定在哪里正确进行此验证。直接在实体类中,在相关的表单类中,甚至在控制器中?

我已经将eventdate作为单独的字段注入到表单中,但仍然不知道如何正确访问它以进行验证。

它可以安排为两步过程 - 最重要的是,通过报告中事件的 ID 作为教义关联链接事件。读取 ID 将读取它所引用的事件,并获取数据库记录 - 大概是事件发生的日期。

// in Entity/Report.php
/**
* One Report has One Event.
* @OneToOne(targetEntity="Event")
* @JoinColumn(name="event_id", referencedColumnName="id")
*/
private $event;

在这里,数据库具有event_id列,您可以从$report->event(或->getEvent()(获取该记录的内容。

然后,如果您当前的报告回调验证,请添加另一个检查,以确保事件已经发生 - 如果没有,则添加新的违规行为"您无法报告尚未发生的事件"。

最新更新