4

フォーム要素が必要ない場合でも、バリデーターを起動させる方法はありますか?

いくつかのラジオボタンである別のフォーム要素の値に特定の値が選択されている場合、texbox の内容を検証したいフォームがあります (空でないことを確認してください)。現在、フォームクラスの isValid() 関数をオーバーライドすることでこれを行っていますが、うまく機能しています。ただし、これを on バリデーターに移動するか、Callback バリデーターを使用したいと思います。ここに私がこれまでに持っているものがありますが、他のフォーム要素の値が特定の価値。

// In my form class's init function
$budget = new Zend_Form_Element_Radio('budget');
$budget->setLabel('Budget')
    ->setRequired(true)
    ->setMultiOptions($options);

$budgetAmount = new Zend_Form_Element_Text('budget_amount');
$budgetAmount->setLabel('Budget Amount')
 ->setRequired(false)
 ->addFilter('StringTrim')
 ->addValidator(new App_Validate_BudgetAmount());

//Here is my custom validator (incomplete) but just testing to see if it even gets called.
class App_Validate_BudgetAmount extends Zend_Validate_Abstract
{
    const STRING_EMPTY = 'stringEmpty';

    protected $_messageTemplates = array(
        self::STRING_EMPTY => 'please provide a budget amount'
    );

    public function isValid($value)
    {
        echo 'validating...';
        var_dump($value);
        return true;
    }
}
4

1 に答える 1

4

setRequired(false) の代わりに setAllowEmpty(false) を使用すると、バリデーターが引き続き呼び出されるように見えます。だから私は今持っています:

$budgetAmount->setLabel('Budget Amount')
    ->setAllowEmpty(false)
    ->addFilter('StringTrim')
    ->addValidator(new App_Validate_BudgetAmount());

そして、それはうまく機能しています

于 2010-06-09T21:19:19.130 に答える