我有一个包含日期字段的doctrine实体的symfony项目。一切正常,但我希望能够选择进入日期和月份。我可以输入:01-01-2014,或者只是2014年。
小部件存在标准的3个选择字段。当我只输入年份字段时,它不会验证。
有没有办法只进入年份?
答案 0 :(得分:1)
在php中,日期有一天,一个月和一年。您需要让所有3个人都有一个有效的日期。为了实现你的目标,我建议创建你自己的实体,它有两个字段 - 日期和布尔值。创建新对象时,将日期设置为1月1,将布尔值设置为false。如果用户输入日期,请将布尔值更改为true。这样即使用户想要使用Jan 1,您也会知道它的有效日期,因为布尔值已经更改。
用户不需要查看布尔字段,只需显示月份和日期字段,如果他们输入任何数据,则在保留对象时将布尔值更改为true。
答案 1 :(得分:1)
我遇到了同样的问题。在我的应用程序中,我有一个包含年份和月份的日期字段,其中月份是可选的。我决定做自定义映射类型(http://symfony.com/doc/current/cookbook/doctrine/dbal.html#registering-custom-mapping-types,http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types)并将这些值存储为db中的 varchar 。如果搜索可能性很重要,我认为可以将其重写为 date ,至少在MySQL中,因为您可以将月和日存储为00(与https://stackoverflow.com/a/5882493/779084比较)。
您可以在下面找到Symfony 2.6的代码。
https://gist.github.com/piotrgradzinski/2a2ba7c1a565dba723f6