2013-02-11 63 views
1

我试图做一个可以为空的整数,这是一个整数也可以有一个值设置为null。Symfony2窗体自定义复合类型

要做到这一点,我希望有一个复选框的整数输入,以表示它为空(然后可以通过JavaScript挂接来禁用/启用整数输入)。

我看到这样的三种方式:

  1. 具有两个字段的自定义类型。
  2. 有一个自定义窗体小部件来处理这两个。
  3. 一和二的一些组合。

我对此没有任何问题,它非常直截了当。

我似乎无法找到任何有关文档是如何让这两个领域漏斗到一个单一的变量。

任何想法?

+1

你应该检查你的控制器。如果复选框被选中,则数字为空。当你不想填满它时,你为什么不把它放空? – cheesemacfly 2013-02-11 20:10:26

+0

如果我要在控制器中处理这个问题,那么每次我想使用该类型时都不得不处理这个问题,而不是像Abstract类型那样。我想有一个明确的复选框为空(与空白字段),所以它是非常明确的,你将它设置为空,而不是一些默认值(如0,这是空字符串将等同)。随着我的工作,0和null意味着两个完全不同的东西。 – samanime 2013-02-11 23:17:38

回答

3

我可以看到的最好方法是在表单中应用form transformer

如果选中该复选框,则将空值设置为您的属性,如果不是,则指定整数小部件的值。

你可以看看here并将其应用于您的特定情况。

附注:我不会在控制器中这样做,这不是他的工作。

+1

完美,谢谢!并同意关于无控制器的事情。我想要一些我可以纯粹在类型中设置的东西,然后基本上忘记它在幕后做的事情。 =) – samanime 2013-02-11 23:15:38