Symfony 3.4:如何针对不属于绑定到表单的实体的一部分的 "external" 值进行验证
Symfony 3.4: How to validate against an "external" value that's not part of the entity bound to a form
我是 symfony 的新手,我对 PHP 7.
还不是很有经验
我们有一个事件数据库,在事件发生后,组织者必须提交报告。
event
和 report
是单独的实体 class。
report
除了其 ID 外,对关联的 event
一无所知。
如果报告在事件发生之前提交,验证应该失败。
但是,我不知道如何在验证期间访问 event
的 eventdate
属性。
我们正在通过注释定义约束,并且 report
实体中已经有一个回调约束。
我什至不确定在哪里可以正确地进行此验证。直接在实体 class 中,在相关表单中 class 甚至在控制器中?
我已经将 eventdate
作为单独的字段注入到表单中,但仍然不知道如何正确访问它以进行验证。
它可以安排为一个两步过程 - 最重要的是,link事件通过它在报告中的 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()
)中获取该记录的内容。
然后,如果您当前的报告回调验证,添加另一个检查,以确保事件已经发生 - 如果没有,您添加一个新的违规行为 "you can't make a report on an event that hasn't happened yet."
我是 symfony 的新手,我对 PHP 7.
还不是很有经验我们有一个事件数据库,在事件发生后,组织者必须提交报告。
event
和 report
是单独的实体 class。
report
除了其 ID 外,对关联的 event
一无所知。
如果报告在事件发生之前提交,验证应该失败。
但是,我不知道如何在验证期间访问 event
的 eventdate
属性。
我们正在通过注释定义约束,并且 report
实体中已经有一个回调约束。
我什至不确定在哪里可以正确地进行此验证。直接在实体 class 中,在相关表单中 class 甚至在控制器中?
我已经将 eventdate
作为单独的字段注入到表单中,但仍然不知道如何正确访问它以进行验证。
它可以安排为一个两步过程 - 最重要的是,link事件通过它在报告中的 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()
)中获取该记录的内容。
然后,如果您当前的报告回调验证,添加另一个检查,以确保事件已经发生 - 如果没有,您添加一个新的违规行为 "you can't make a report on an event that hasn't happened yet."