【问题标题】:Disable one Zend Multioption form MultiCheckbox禁用一个 Zend Multioption 表单 MultiCheckbox
【发布时间】:2020-06-25 06:40:46
【问题描述】:

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

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

【问题讨论】:

  • 我认为你需要一个自定义装饰器来实现这一点。
  • 应该是 $multiCheckbox->setAttrib('disable', $this->getName($valuesArray[2]));
  • @Rijndael,之前尝试过,没有帮助。

标签: php checkbox zend-framework zf1


【解决方案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

【讨论】:

  • 我想我理解你想要做什么,但这并不能解决我的问题。如我所见,您要禁用整个 Form_Element_MultiCheckbox(包含许多复选框)?我只想禁用一个 MultiOption(一个特定的复选框)。
  • 是的,我明白了。这就是您在视图助手中所做的。 Zend 循环遍历所有的复选框元素并创建它们。因此,您覆盖该功能并添加一个检查以将禁用选项添加到您想要禁用的选项。
  • 由于我没有使用视图,而是构建了一个稍后使用模板引擎呈现的自定义 JSON,因此我从未使用视图助手。因此,为了解决我的问题,我更改了模板和渲染算法以包含新选项......但我想如果有人会使用该视图,那么您的(@Schleis)解决方案是正确的。
  • 这里没有回答这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
相关资源
最近更新 更多