2

フォームを 3 つのサブフォームに分割し、要素の 1 つについて、最後のサブフォームで、拡張するバリデーターを作成していますZend_Validator_Abstract

このバリデータは、2 番目のサブフォームの値が空でないことを確認する必要があります。ただし、この値は$context、3 番目のサブフォームの要素の配列には含まれません。

この値$contextをサブフォーム全体で利用できるようにする賢明な方法は何ですか?

...

少し考えた後、カプセル化を破っているにもかかわらず、これを行うことを考えることができる唯一の方法は、親フォームの参照をバリデーターのコンストラクターに渡すことです。

4

1 に答える 1

3

フォーム オブジェクトの isValid() メソッドをオーバーライドして、そこで利用可能な $data 変数を利用することもできます。

例えば:

<?php 
class MyForm extends Zend_Form {
    public function isValid($data) {
        // check $data['fieldname'] or add a new validator here, then...
        return parent::isValid($data);
    }
}
于 2010-08-19T16:00:08.880 に答える