2

Zend Framework 2 の Select 要素の面倒な検証をバイパスしたかったのです。私の要件は、左の選択ボックスから右の選択ボックスに値を渡す 2 つの選択ドロップダウン ボックスがあり、最後に送信ボタンをクリックしたときに、右の選択ボックスから値を投稿します。

したがって、基本的に左の選択ボックスはユーザーに値を表示するためにあります。私の問題は、左の選択ボックスで値が選択されていないため、このエラーがスローされることです。

["selectAll"] => array(1) {
      ["isEmpty"] => string(36) "Value is required and can't be empty"
    }

特定の選択要素の検証を無効にできるように、Zend Framework 1 でこれが可能である、Stackoverflow からのいくつかの古い投稿を見てきました。

例:-

$selectAllElement->setRequired(false);

また

$selectAllElement->removeDecorator('Errors');

これらのメソッドが Zend Framework 2 で使用できない方法もあります。誰かが特定の選択要素の検証を無効にする方法の解決策を持っている場合は、知識を共有してください。Zend Framework 2 を使用する人々にとって有益です。

編集:

私の形で-

    $select = new Element\Select('selectAllElement');
    $select->setAttribute('title', 'Select a Value')
            ->setAttribute('id', 'id');

    $options = array(
        array(
           //Fetching the values from database
            ),
    );

   $select->setAttribute('multiple', 'multiple')
        ->setAttribute('required', false)
        ->setValueOptions($options);

   $this->add($select);

Sam からの要求に従って、select 要素をフォームに追加して属性を設定する方法のコードを提供しました。

注: FIELDSETSは使用していません

4

3 に答える 3

6

これを答えとして明確にするために、setRequired()任意のZend \ Form \ Elementで-Methodを使用すると、HTML属性required="(bool)"をレンダリングする必要があるかどうかのみが宣言されます。

フィールド/要素を検証から除外する場合は、InputFilters設定内でこれを定義する必要があります'required' => false

于 2012-10-19T13:25:59.520 に答える
1

ビューにない複数選択またはチェックボックスを操作するときに setRequired(false) が機能しないことがあるため、 isValid メソッドをオーバーライドして、上記のコードのようにバリデーターを削除します。

public function isValid() {
    $this->getInputFilter()->remove('alterarsenha');
    $this->getInputFilter()->remove('usuario_perfis');

    return parent::isValid();
}
于 2014-10-23T12:17:42.920 に答える