我有一个要求,可以在 2 种不同的情况下实施流程。一种情况是开始日期不能是过去,另一种情况是可以。
目前我们使用值对象,我们在使用 Zend Validate 对象提交的每个字段上执行一系列验证项。
验证扩展了一个基类,例如
类 ValueObject_test1 扩展 filter()
过滤器由以下部分组成: -
class filter {
protected $_filter;
protected $_filterRules = array();
protected $_validatorRules = array();
protected $_data = array();
protected $_objData = array();
protected $_options = array(Zend_Filter_Input::ESCAPE_FILTER => 'StripTags');
protected $_runValidation = true;
protected function _setFilter()
protected function _addFilter()
protected function _addValidator()
protected function _addData()
protected function _addObject()
protected function _addOption()
public function getData()
public function hasErrors()
public function getMessages()
public function getValidationState()
public function __get()
public function __isset()
public function __set()
}
ValueObject_test1 由以下部分组成:
class ValueObject_test1 extends filter {
public function __construct($testVar) {
$this->_setData(testVar);
$this->_setFilters();
$this->_setValidators();
if($this->_runValidation) {
$this->_setFilter();
}
}
protected function _setFilters(){
$this->_addFilter("*", "StringTrim");
}
protected function _setData($testVar) {
$this->_addData('testVar', $testVar);
}
protected function _setValidators() {
$this->_addValidator('testVar', array(new Zend_Validate(), 'presence'=>'required', 'messages'=>'Enter something'));
}
}
我想要实现的是 ValueObject_test1 的扩展,这样我的第二种情况将有一个额外的验证项目以及 ValueObject_test1() 中的项目
我为第二种情况写了以下内容:-
<?php
class ValueObject_test2 extends ValueObject_test1 {
public function __construct($testVar, $testVar2) {
$this->_setData($testVar, $testVar2);
$this->_setFilters();
$this->_setValidators();
if($this->_runValidation) {
$this->_setFilter();
}
}
protected function _setFilters(){
$this->_addFilter("*", "StringTrim");
}
protected function _setData($testVar, $testVar2) {
$this->_addData('testVar', $testVar);
$this->_addData('testVar2', $testVar2);
}
protected function _setValidators() {
$this->_addValidator('testVar2', array(new Zend_Validate(), 'presence'=>'required', 'messages'=>'Enter something'));
}
}
我遇到的问题是,此输出似乎仅验证了我的第二个情况验证,而第二个则没有。我的印象是,通过在 _setData() 中设置两个变量,应该对 ValueObject_test1 中的项目和我的 ValueObject_test2 中的项目进行验证?