2014-09-01 120 views
1

我有一个包含日期字段的学说实体的symfony项目。一切工作正常,但我希望能够选择输入日期和月份。这样我就可以进入:2014年1月1日,或只是2014年Symfony日期时间字段日期和月份可选

标准3个选择字段的小部件存在。当我只输入年份字段时,它不验证。

有没有办法只进入一年?

回答

1

在php中,日期有一天,一个月和一年。你需要让所有3个都有一个有效的日期。为了实现你的目标,我建议创建你自己的实体,它有两个字段 - 一个日期和一个布尔值。当您创建一个新对象时,请将日期设置为Jan 1,并将布尔值设置为false。如果用户输入日期,请​​将布尔值更改为true。这种方式即使用户想要使用1月1日,你也会知道它的有效日期,因为布尔值已被更改。

用户并不需要看到的布尔字段或者,只是告诉他们月份和日期字段,如果他们输入任何数据,则布尔值更改为true,当你坚持下去的对象。

+0

:)我的想法完全一样的东西,但也许有一个更简单的解决方案。 Thx – Nealv 2014-09-01 20:24:19

+0

我正在考虑这一点,而不是一个新的实体,你可以使用日期而不是日期。您可以先将分钟数设置为一个数字,然后在用户添加日期时将其重置为不同的数字。你将需要你自己的方法来检查这个,但至少它不是一个新的实体。 – George 2014-09-02 12:21:32

+0

非常好的主意,如果我已经实现它,以后会再回来 – Nealv 2014-09-02 15:03:05

1

我遇到了同样的问题。在我的应用程序中,我有一个包含年份和月份的日期字段,其中月份是可选的。我决定做自定义映射类型(http://symfony.com/doc/current/cookbook/doctrine/dbal.html#registering-custom-mapping-typeshttp://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types)这些值存储在数据库VARCHAR。如果搜索的可能性很重要,我认为这可以重写为日期,至少在MySQL中,因为您可以将月份和日期存储为00(与https://stackoverflow.com/a/5882493/779084比较)。

以下您可以找到Symfony 2.6的代码。

https://gist.github.com/piotrgradzinski/2a2ba7c1a565dba723f6

相关问题