Zend framework Zend Framework:如何创建Zend#u表单(子表单)作为复选框表,其中包含空单元格和非'的纯文本单元格;你没有提交吗?

Zend framework Zend Framework:如何创建Zend#u表单(子表单)作为复选框表,其中包含空单元格和非'的纯文本单元格;你没有提交吗?,zend-framework,xhtml,zend-form,hidden,Zend Framework,Xhtml,Zend Form,Hidden,如何将空单元格和仅包含文本的单元格添加到Zend_表单上的表中,否则这些单元格只包含复选框(表包装到表单上!),以便不提交其值 我基本上遵循了本教程,实际上我的代码在结构上没有太大的不同: 最大的区别是,我需要每个td标签都有一个复选框、一些文本,或者里面什么都没有。由于我不知道如何将文本或“空内容”添加到这样的ZF子表单中,因此我使用以下方法将禁用的隐藏输入添加到这些表格单元格中: // empty cells $form->addElement('hidden', $name, ar

如何将空单元格和仅包含文本的单元格添加到Zend_表单上的表中,否则这些单元格只包含复选框(表包装到表单上!),以便不提交其值

我基本上遵循了本教程,实际上我的代码在结构上没有太大的不同:

最大的区别是,我需要每个td标签都有一个复选框、一些文本,或者里面什么都没有。由于我不知道如何将文本或“空内容”添加到这样的ZF子表单中,因此我使用以下方法将禁用的隐藏输入添加到这些表格单元格中:

// empty cells
$form->addElement('hidden', $name, array('disabled' => 'disabled'));

// cells with descriptive text only
$form->addElement('hidden', $name, array('disabled' => 'disabled', 'label' => $name));
这显示了Zend_表单及其装饰程序生成的复选框表,有些单元格仅显示文本,有些单元格为空:

<table><tbody>

<tr>
<td>
<input type="hidden" name="checkboxes[isoansi][isoansi_dbms]" value="" disabled="disabled" id="checkboxes-isoansi-isoansi_dbms" />
<label for="checkboxes-isoansi-isoansi_dbms" class="optional">ISO/ANSI SQL</label></td>
<td>
<input type="checkbox" name="checkboxes[isoansi][isoansi_all]" id="checkboxes-isoansi-isoansi_all" value="1" checked="checked" />
<label for="checkboxes-isoansi-isoansi_all" class="optional">All</label></td>
<td>
<input type="checkbox" name="checkboxes[isoansi][isoansi_1992]" id="checkboxes-isoansi-isoansi_1992" value="1" checked="checked" />
<label for="checkboxes-isoansi-isoansi_1992" class="optional">1992</label></td>
<td>
<input type="checkbox" name="checkboxes[isoansi][isoansi_1999]" id="checkboxes-isoansi-isoansi_1999" value="1" checked="checked" />
<label for="checkboxes-isoansi-isoansi_1999" class="optional">1999</label></td>
<td>
<input type="checkbox" name="checkboxes[isoansi][isoansi_2003]" id="checkboxes-isoansi-isoansi_2003" value="1" />
<label for="checkboxes-isoansi-isoansi_2003" class="optional">2003</label></td>
<td>
<input type="checkbox" name="checkboxes[isoansi][isoansi_2008]" id="checkboxes-isoansi-isoansi_2008" value="1" checked="checked" />
<label for="checkboxes-isoansi-isoansi_2008" class="optional">2008</label></td>
<td>
<input type="hidden" name="checkboxes[isoansi][isoansi_4_empty]" value="" disabled="disabled" id="checkboxes-isoansi-isoansi_4_empty" /></td></tr>

... more table rows

<tr>
<td>
<input type="hidden" name="checkboxes[sqlserver][sqlserver_dbms]" value="" disabled="disabled" id="checkboxes-sqlserver-sqlserver_dbms" />
<label for="checkboxes-sqlserver-sqlserver_dbms" class="optional">SQL Server</label></td>
<td>
<input type="checkbox" name="checkboxes[sqlserver][sqlserver_all]" id="checkboxes-sqlserver-sqlserver_all" value="1" checked="checked" />
<label for="checkboxes-sqlserver-sqlserver_all" class="optional">All</label></td>
<td>
<input type="checkbox" name="checkboxes[sqlserver][sqlserver_2000]" id="checkboxes-sqlserver-sqlserver_2000" value="1" />
<label for="checkboxes-sqlserver-sqlserver_2000" class="optional">2000</label></td>
<td>
<input type="checkbox" name="checkboxes[sqlserver][sqlserver_2005]" id="checkboxes-sqlserver-sqlserver_2005" value="1" checked="checked" />
<label for="checkboxes-sqlserver-sqlserver_2005" class="optional">2005</label></td>
<td>
<input type="checkbox" name="checkboxes[sqlserver][sqlserver_2008]" id="checkboxes-sqlserver-sqlserver_2008" value="1" checked="checked" />
<label for="checkboxes-sqlserver-sqlserver_2008" class="optional">2008</label></td>
<td>
<input type="hidden" name="checkboxes[sqlserver][sqlserver_3_empty]" value="" disabled="disabled" id="checkboxes-sqlserver-sqlserver_3_empty" /></td>
<td>
<input type="hidden" name="checkboxes[sqlserver][sqlserver_4_empty]" value="" disabled="disabled" id="checkboxes-sqlserver-sqlserver_4_empty" /></td></tr>

</tbody></table>

ISO/ANSI SQL
全部的
1992
1999
2003
2008
... 更多表行
SQL Server
全部的
2000
2005
2008
如您所见,隐藏的输入都被禁用(表格左侧为纯文本单元格,右侧为一些空单元格)

但是,当我提交表单并打印所有回发值时,空单元格和纯文本单元格的禁用隐藏输入也会显示在$\u POST列表中,即使它们不应该提交(这就是disabled=“disabled”的用途!)

这里怎么了

同样,在HTML输出中,所有空单元格和纯文本单元格都设置了disabled=“disabled”

我现在有两种可能的解决办法:

  • 在表格数据(td)单元格(Zend_Sub_表单)中添加除已标记、禁用的隐藏输入外的其他内容,或

  • 找出提交禁用的隐藏输入的原因


  • 有人能帮忙吗?可能出了什么问题?

    如果使用$form->getValues()方法检索提交的数据,禁用的字段也会返回。如果希望Zend_Form忽略这些值,请尝试设置ignore属性,例如

    $form->addElement('hidden', $name, array('disabled' => 'disabled','ignore'=>true));
    

    这是一个简单的解决方案,非常感谢。我想知道为什么Zend会为此引入一个单独的属性,因为残疾人正是这样做的。可能需要单独映射值。隐马尔可夫模型。