Php Zend验证器和多维数组
如何在Zend Framework(Zend_Filter_输入)中验证多维数组 例如:Php Zend验证器和多维数组,php,multidimensional-array,zend-validate,zend-framework,Php,Multidimensional Array,Zend Validate,Zend Framework,如何在Zend Framework(Zend_Filter_输入)中验证多维数组 例如: 输入必须是数组 输入必须具有“角色”和“名称” “角色”必须是数组 “角色”中的所有元素都必须是数组 “角色”中的所有元素必须具有“名称”和“id”,“访问”是可选的 “id”必须是int “访问”必须是数组 几天前有一个类似的问题: 简而言之,如果您使用Zend\u Filter\u Input,它会将数组值分别传递给相关的验证器。因此,不可能将阵列作为一个整体使用,而是使用单个组件 EDIT:一种
- 输入必须是数组
- 输入必须具有“角色”和“名称”
- “角色”必须是数组
- “角色”中的所有元素都必须是数组
- “角色”中的所有元素必须具有“名称”和“id”,“访问”是可选的
- “id”必须是int
- “访问”必须是数组
几天前有一个类似的问题: 简而言之,如果您使用
Zend\u Filter\u Input
,它会将数组值分别传递给相关的验证器。因此,不可能将阵列作为一个整体使用,而是使用单个组件
EDIT:一种可能的解决方案是创建自己的特定Zend\u 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;
}
}
希望这能有所帮助,这是否意味着Morfi必须从客户机代码中手动应用“逻辑验证”列表中的所有项目?如果是的话,哪里是合适的地方?在形式模型中?@cantera25:我已经用我将采取的方法更新了我的答案。
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;
}
}