禁用一个Zend Multi Option表单Multi Checkbox

时间:2013-05-31 12:56:04

标签: php zend-framework checkbox

我正在创建一个多检查框,然后用循环填充它,是否可以在之后或填充期间禁用其中一个复选框?

$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);

1 个答案:

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