gpt4 book ai didi

zend-framework - Zend Framework 表单元素验证器 - 即使不需要也验证字段

转载 作者:行者123 更新时间:2023-12-04 04:32:16 24 4
gpt4 key购买 nike

即使不需要表单元素,有没有办法让验证器触发?

如果另一个表单元素(几个单选按钮)的值选择了特定值,我有一个表单,我想在其中验证 texbox 的内容(确保不为空)。现在我通过覆盖表单类的 isValid() 函数来做到这一点,并且效果很好。但是,我想将其移动到它的验证器上或使用回调验证器。这是我到目前为止所拥有的,但它似乎永远不会被调用,除非我将字段更改为 setRequired(true),我不想一直这样做,只有当另一个表单元素的值设置为特定值(value)。

// 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;
}
}

最佳答案

看起来如果你使用 setAllowEmpty(false) 代替 setRequired(false) 那么你的验证器仍然会被调用。所以我现在有:

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

它工作得很好

关于zend-framework - Zend Framework 表单元素验证器 - 即使不需要也验证字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com