【发布时间】:2012-05-18 09:02:17
【问题描述】:
在我的 Symfony2 应用程序中有一个名为“Appointment”的实体。该实体有一个名为“日期”的字段/属性。它的格式类似于:'2012-12-24'。
我创建了一个名为 AppointmentType 的表单,以便能够根据约会的属性搜索约会。该表单在 AppointmentController 中使用,并呈现到 Appointment.html.twig。
到目前为止一切顺利。我可以根据所有字段搜索约会。例如,我可以搜索特定日期(即完全匹配)。
但是,我希望能够搜索给定日期范围的约会(使用开始和结束日期)。问题是:“给我这个日期和那个日期之间的所有约会。”我尝试了很多东西,但在 Symfony2 中无法解决。
这里有一些随机的想法:
- 我是否应该在旁边的约会实体中创建两个额外的字段 “日期”,称它们为“开始日期”和“结束日期”,而不是将它们链接到 MySql 表但仅用于搜索?
- 我应该在表单中做些什么,创建两个链接到实体的相同日期属性的日期字段(似乎会导致违规)?
- 我是否应该为此不使用 Symfony2 表单,而是使用老式方式(手动编写和处理表单)?这目前可行,但在 Symfony2 环境中远非优雅。
欢迎任何帮助。特别是一个(完整的)工作代码示例会很棒,所以我可以研究它。
【问题讨论】:
-
查看Creating form classes 部分中的提示 - 提到了
property_path选项 -
我认为你是对的,jkucharovic!一定是这个。现在我可以在我的表单中指定两个日期属性,而不是将它们链接到对象。在我的控制器中,我使用这两个日期来指定要查询的范围,如下面的 Lee Davis 所示。非常感谢!
-
更简单的解决方案是Callback validator
标签: forms symfony doctrine-orm date-range