如何验证Zend Framework中的多维数组(Zend_Filter_Input)?
示例:
$input = array(
'roles' => array(
array('name' => 'Test', 'id' => 1),
array('name' => 'Test2', 'id' => 2, 'access' => array('read', 'write'))
),
'name' => 'blabla'
);
答案 0 :(得分:1)
前几天有一个类似的问题:Passing an array as a value to Zend_Filter
简而言之,如果您使用Zend_Filter_Input
,它会将数组值分别传递给关联的验证程序。因此,不可能将整个数组用作单个组件。
编辑:一种可能的解决方案是创建您自己的特定Zend_Validate
类,并在isValid
方法中包含所有检查,如下所示:
class MyValidator extends Zend_Validate_Abstract
{
const MESSAGE = 'message';
protected $_messageTemplates = array(
self::MESSAGE => "Invalid format for the array"
);
public function isValid($value)
{
if (!is_array($value)) {
$this->_error();
return false;
}
// ...
return true;
}
}
希望有所帮助,