0

現在、フォームの検証に苦労しています。私は以下のクラスを使用しています。これは流暢なインターフェイスになることを目的としています。

class Validator implements ValidatorInterface {

    protected $_count_validators = 0;

    protected $_validators;

    protected $errorMsg;

    public function __construct($errorMsg = '')
    {
        $this->errorMsg = $errorMsg;
    }

    public function addValidator(ValidatorInterface $validator)
    {
        $this->_count_validators++;

        $this->_validators[] = $validator;
        return $this;
    }

    public function validate($value)
    {
        foreach($this->_validators as $validator) {
            if ($validator->validate($value) === false) {
                return false;
            }
        }
        return true;
    }

    public function getError()
    {
        return $this->errorMsg;
    }
}

実際には 75% 動作します。次のようにバリデーターを追加できます。

$postalcodeValidator = new \Framework\Formular\Validator\Validator();
$validatePostalcode= $postalcodeValidator->addValidator(new \Framework\Formular\Validator\NotEmpty)
                ->addValidator(new \Framework\Formular\IsNumeric);

$cityValidator = new \Framework\Formular\Validator\Validator();
$validateCity = $lastnameValidator->addValidator(new \Framework\Formular\Validator\NotEmpty);

今、私はただ書くことができます:

$result = $postalcodeValidator->validate('00000');

- or -

$result = $cityValidator->validate('London');

そして、ブール値を取得します。私の問題は、いくつかのエラーを簡単に設定できるようにする必要があることです。上記の例では、クラスに getErrors() 関数を追加しただけの場合、クラスの新しいインスタンス化ごとにエラーを取得する必要がありました。すべてのエラーを取得する関数を作成したいと考えています。

その解決策を教えていただけますか?

前もって感謝します、

デンラウ

4

1 に答える 1