Zend Framework: как создать Zend_Form (подформу) в виде таблицы флажков с пустыми и текстовыми ячейками, которые не отправляются? - PullRequest
0 голосов
/ 19 января 2011

Как добавить пустые ячейки и ячейки, содержащие только текст, в таблицу в Zend_Form, которая в противном случае содержит только флажки (таблица, обернутая в форму!), Чтобы их значения не отправлялись?

Я в основном следовал этому руководству, и действительно, мой код не сильно отличается по структуре:

http://davidcaylor.com/2008/03/24/building-table-based-forms-in-zend_form/

Большая разница в том, что мне нужен флажок для тега 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_Form и его декораторами, некоторые ячейки только для текста, а некоторые пустые:

<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>

Как видите, все скрытые входы отключены (только текстовые ячейки слева и некоторые пустые)справа от таблицы).

Однако, когда я отправляю форму и печатаю все значения обратной передачи, отключенные скрытые входные данные пустых ячеек и ячеек только для текста также появляются в списке $ _POST, дажехотя они и не должны быть отправлены (это то, для чего отключено = "отключено"!).

Что здесь не так?

Опять же, в выводе HTML все пусто, а текст -только ячейки отключены = "отключено" установлено.

У меня есть два возможных решения:

  1. Либо добавьте что-то еще, но помеченные, отключенные скрытые входы в данные таблицы (td) ячейки (Zend_Sub_Form) ИЛИ

  2. Узнайте, почему отправляются отключенные скрытые входные данные

Кто-нибудь может помочь?Что может быть не так?

1 Ответ

1 голос
/ 19 января 2011

Если вы используете метод $ form-> getValues ​​() для извлечения отправленных данных, возвращаются также отключенные поля. Если вы хотите, чтобы Zend_Form игнорировал эти значения, попробуйте установить свойство ignore, например,

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