0
在Zend我有一個由兩個文本字段和一個複選框組成的自定義複合元素。如何填充Zend自定義複合元素中的複選框?
這是視圖助手:
<?php
class My_View_Helper_WorkplaceFactor extends Zend_View_Helper_FormElement{
protected $html = '';
public function workplaceFactor($name, $value = null, $attribs = null){
$this->html = '';
$factor = $applies = $note = '';
if($value){
$factor = $value['factor'];
$applies = $value['applies'];
$note = $value['note'];
}
$helperText = new Zend_View_Helper_FormText();
$helperText->setView($this->view);
$helperCheckbox = new Zend_View_Helper_FormCheckbox();
$helperCheckbox->setView($this->view);
$checked = 0;
if($applies == "1"){
$checked = 1;
}
$this->html .= '<td><label for="' . $name . '[factor]">Faktor</label></td><td>' . $helperText->formText($name . '[factor]', $factor) . '</td>';
$this->html .= '<td><label for="' . $name . '[applies]">Platí</label></td><td>' . $helperCheckbox->formCheckbox($name . '[applies]', $applies, array('checked' => $checked)) . '</td>';
$this->html .= '<td><label for="' . $name . '[note]">Poznámka</label></td><td>' . $helperText->formText($name . '[note]', $note) . '</td>';
return $this->html;
}
}
我的問題是填充複選框,當窗體是無效的,並重新加載自身。當我檢查複選框並重新加載時,沒關係,它會填充。當我取消選中選中的項目時,也可以在重新加載時正確顯示。但是當我想檢查複選框後頁面已被重新加載,檢查值甚至不是在發佈請求,因此它不起作用。
元素的標記如下:
<tr id="factor1">
<td><label for="factor1[factor]">Faktor</label></td><td><input type="text" name="factor1[factor]" id="factor1-factor" value="Prach" /></td>
<td><label for="factor1[applies]">Platí</label></td><td><input type="hidden" name="factor1[applies]" value="0" /><input type="checkbox" name="factor1[applies]" id="factor1-applies" value="0" /></td>
<td><label for="factor1[note]">Poznámka</label></td><td><input type="text" name="factor1[note]" id="factor1-note" value="" /></td></tr>
我身邊有計算器徘徊,我認爲這個問題是該複選框名稱中的[],但如果我不把它們放在那裏, 'apply'複選框值不屬於'factor'值數組,因此它根本不會填充。你有什麼想法如何找到這個魔術圈的方式?