0

ZF 1.11.3 こちら。

$validators = array(
    'pass1' => array('presence' => 'required'),
    'pass2' => array(array('Identical', true, 'token' => 'pass1'))
),

$input = new Zend_Filter_Input(array(), $validators, $this->_request->getParams());

if (!$input->isValid()) {
    var_dump($input->getMessages());
}

上記のコードを使用すると、次のようになります(実際にはfirephpでフォーマットされています):

['pass2'] =>
array(
  ['notSame'] => 'The two given tokens do not match'
)

ご想像のとおり、「pass1」と「pass2」に同じ文字列が含まれていても、そのエラーが表示されます (基本的にはパスワード確認フォームです)。

Zend_Form や addValidator() を使用することはできません (聞かないでください)。そのため、この構文を使いこなさなければなりませ。を指していarray(array('Identical', true, 'token' => 'pass1'))ます。私も試してみましたarray(array('Identical', true, array('token' => 'pass1')))が、同じエラーが発生しました。これらの配列をどこに設定するのか理解していないようです。

提案、修正、または「半分!」。

4

2 に答える 2

1

使用できない場合は、配列で指定されたバリデータのインスタンスを作成しようとするため、Zend_Valiate_*使用できません。Zend_Filter_InputZend_Filter_Input

さらに、構文が間違っていると思います。マニュアルのこの例を見てください。

$validators = array(
    'password' => array(
        'Identical',
        'fields' => array('password1', 'password2')
    )
);
于 2011-05-02T15:52:59.653 に答える
0

Zend_Filter_Input がcontextを使用する場合、 のような文字列ではなく、 の値と 比較して検証します。また、Zend_Form を使用していないため、コンテキストを使用できません。some_input_namesome_input_name

Zend_Filter_Input はコンテキストでは機能しませんが、Zend_Form_Element を通じてコン​​テキストを使用できます。

http://framework.zend.com/issues/browse/ZF-10673

于 2011-05-03T09:05:02.283 に答える