Php Zend验证器和多维数组

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:一种

如何在Zend Framework(Zend_Filter_输入)中验证多维数组

例如:

  • 输入必须是数组
  • 输入必须具有“角色”和“名称”
  • “角色”必须是数组
  • “角色”中的所有元素都必须是数组
  • “角色”中的所有元素必须具有“名称”和“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;
    }
}