3

Zend Framework (Zend_Filter_Input) で多次元配列を検証するにはどうすればよいですか?

例:

  • 入力は配列でなければなりません
  • 入力には「役割」と「名前」が必要です
  • 「役割」は配列でなければなりません
  • 「ロール」のすべての要素は配列でなければなりません
  • 「ロール」のすべての要素には「名前」と「ID」が必要です。「アクセス」はオプションです
  • 'id' は int でなければなりません
  • 「アクセス」は配列でなければなりません

$input = array(
    'roles' => array(
        array('name' => 'Test', 'id' => 1),
        array('name' => 'Test2', 'id' => 2, 'access' => array('read', 'write'))
    ),
    'name' => 'blabla'
);
4

1 に答える 1

1

数日前に同様の質問がありました: 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;
    }
}

それが役立つことを願って、

于 2011-11-29T09:11:37.340 に答える