我正在使用 Zend Framework 编写应用程序。我有一个简单的表单,它有两个文本框。
如何向表单添加验证,以便至少填充一个输入框?
您可以创建一个自定义验证器,例如:
class My_Validate_AtLeastOneNotEmpty implements Zend_Validate_Interface
{
protected $thisField;
protected $otherField;
protected $messages = array();
public function __construct($thisField, $otherField){
$this->thisField = $thisField;
$this->otherField = $otherField;
}
public function isValid($value, $context = null)
{
$validator = new Zend_Validate_NotEmpty();
if (!$validator->isValid($value) && !$validator->isValid($context['otherField'])){
$this->messages[] = 'At least one of the fields - '
. $thisField . ' or ' . $otherField
. ' - must be non-empty';
return false;
}
return true;
}
public function getMessages()
{
return $this->messages;
}
}
然后将此验证器附加到元素之一,标识两个名称:
// create the two fields
$fld1 = new Zend_Form_Element_Text('field1');
$fld2 = new Zend_Form_Element_Text('field2');
// add the validator to one of them, identifying both fields
$fld1->addValidator(new My_Validate_AtLeastOneNotEmpty('field1', 'field2'));
通常,我们不需要识别要附加验证器的元素的字段名。但是,通过将两个字段名都传递给验证器,我们可以让用户更清楚地看到错误消息。
创建一个带有两个选项的单选组,均未选中。隐藏文本字段。通过单选按钮上的 onclick 事件,您可以显示其中一个文本框。现在您可以将所需的验证器添加到单选按钮。一点解决方法,但结果是一样的。