Nette getHttpData 包括未选中的复选框

Nette getHttpData include of unchecked checkboxes

当我有一个带有动态数量的复选框(name='golyPenalta[]')的表单并且在提交时我使用 $form->getHttpData($form::DATA_TEXT, "golyPenalta[]"); 获取它们时,可以以某种方式包含未选中的复选框吗?只有检查过的才放在场上,有自己的顺序,所以不知道哪个点球属于哪个球:

golyCas => array (3)
   0 => "55" (2)
   1 => "60" (2)
   2 => "70" (2)
golyPenalta => array (2)
   0 => "on" (2)
   1 => "on" (2)   // <- this should be part of third goal so index should be 2

我已经尝试用 $form->getHttpData($form::DATA_TEXT | $form::DATA_KEYS, "golyPenalta[]"); 做到这一点,但没有成功。上面的转储来自属性 httpData 中 $form 的转储。

很遗憾,没有,未选中的复选框甚至不会在 http 的 POST 数据中发送。您必须在 nette 中定义元素,然后使用 $form->getValues() 将它们包括在内。如果你只在客户端添加它们,服务器就没有机会知道它们的存在。

当我创建该字段的动态数字时,我最终使用输入名称 name='golyPenalta[key]' 中的特定键实现了它。它可以通过 Nette 形式 name='golyPenalta[{key}]' 或者我在 for 循环中通过 JavaScript 创建它,当我得到我必须像这样创建的字段数时 name='golyPenalta[$i]'.

在表单提交中,我使用 $form->getHttpData($form::DATA_TEXT | $form::DATA_KEYS, "golyPenalta[]") 来保留这些键。