3

マルチチェックボックスを作成し、その後ループで埋めています。後で、または入力中にチェックボックスの1つを無効にすることは可能ですか?

$multiOptions = array();
$multiCheckbox = new Zend_Form_Element_MultiCheckbox('multi_name', $multiOptions);
foreach($valuesArray AS $value) {
    $name = $this->getName($value);
    $multiCheckbox->addMultiOption($name, $value);
}

以下のコードで 1 つのチェックボックスを無効にしようとしましたが、機能しませんでした。誰もがより良い提案を得ましたか?

$multiCheckbox->setAttrib('disable', $this->getName($valuesArray[2]));

これも役に立ちませんでした:

$multiCheckbox->setAttrib('disable', $valuesArray[2]);

値を持つ配列は単純な配列です。

$valuesArray(1, 2, 3, 4, 5);
4

1 に答える 1

0

要素が表示されたときに無効な属性を設定できるように、新しいビュー ヘルパーを作成する必要があります。

現在のビュー ヘルパー コードは次のようになります。

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その要素のビュー ヘルパーを自分で作成することができます。Zend Framework マニュアルに基づく

于 2013-06-11T14:38:58.577 に答える