我正在创建一个多检查框,然后用循环填充它,是否可以在之后或填充期间禁用其中一个复选框?
$multiOptions = array();
$multiCheckbox = new Zend_Form_Element_MultiCheckbox('multi_name', $multiOptions);
foreach($valuesArray AS $value) {
$name = $this->getName($value);
$multiCheckbox->addMultiOption($name, $value);
}
我尝试通过下面的代码禁用一个复选框,但它不起作用。有人有更好的建议吗?
$multiCheckbox->setAttrib('disable', $this->getName($valuesArray[2]));
这也没有帮助:
$multiCheckbox->setAttrib('disable', $valuesArray[2]);
带有值的数组只是一个简单的数组:
$valuesArray(1, 2, 3, 4, 5);
答案 0 :(得分:1)
您需要创建一个新的视图助手,以便在显示元素时设置该元素的已禁用属性。
当前视图助手代码如下所示:
public function formMultiCheckbox($name, $value=null, $attribs=null, $options=null, $listsep="<br />\n") {
return $this->formRadio($name, $value, $attribs, $options, $listsep);
}
您应该能够在创建多检查框时设置'disabledElement'选项,然后在视图助手中检查是否应禁用显示的复选框。
public function formMultiCheckbox($name, $value=null, $attribs=null, $options=null, $listsep="<br />\n") {
$disableElements = $options['disableElement'];
if(in_array($name, $disableElements, true)) {
$options['disable'] => true;
}
return $this->formRadion($name, $value, $attribs, $options, $listsep);
}
覆盖视图助手以检查应禁用哪些元素,然后设置该选项应该有效。
您可能希望将Form_Element_MultiCheckbox
扩展到您自己的类中,并自己为该元素创建视图助手。 Based on the Zend Framework manual