0

私は検証を行うためにmakeを試しています。私はデータは、このような形式でコントローラに掲載されている:ZF2ネストされたデータ検証

[ 
    'property' => 'value', 
    'nested_property' => [ 
     'property' => 'value', 
     // ... 
    ] 
] 

を私はフィールド/フィルタを分割し、異なるクラスに形成し、ちょうどそのように見えるフォームのコントローラでそれを一緒に集めています

public function __construct($name, $options) 
{ 
    // ... 
    $this->add(new SomeFieldset($name, $options)); 
    $this->setInputFilter(new SomeInputFilter()); 
} 

しかし、それは正しく動作しません、それはちょうど入れ子配列を無視する(またはすべてを無視する)ように見えます。私は何を逃したのですか?

ありがとうございます。

答えて

1

InputFilterクラスを使用する場合は、フィールドセットを含むフォームの設定方法と同じように、入力フィルタを設定する必要があります。

だからあなたのような構造を持っているとき:


  1. 1.2 AnotherFieldset
    1. MyFormを
      1.1 NestedFieldsetを

    あなたinputfiltersは同じ構造を持っている必要がありますMyFormInputFilter
    1.1 NestedFielsetInputFilter
    1.2 AnotherFieldsetInputFilter

いくつかのサンプルコード:

class ExampleForm extends Form 
{ 
    public function __construct($name, $options) 
    { 
     // handle the dependencies 
     parent::__construct($name, $options); 

     $this->setInputFilter(new ExampleInputFilter()); 
    } 

    public function init() 
    { 
     // some fields within your form 

     $this->add(new SomeFieldset('SomeFieldset')); 
    } 
} 

class SomeFieldset extends Fieldset 
{ 
    public function __construct($name = null, array $options = []) 
    { 
     parent::__construct($name, $options); 
    } 

    public function init() 
    { 
     // some fields 
    } 
} 

class ExampleInputFilter extends InputFilter 
{ 
    public function __construct() 
    { 
     // configure your validation for your form 

     $this->add(new SomeFieldsetInputFilter(), 'SomeFieldset'); 
    } 
} 

class SomeFieldsetInputFilter extends InputFilter 
{ 
    public function __construct() 
    { 
     // configure your validation for your SomeFieldset 
    } 
} 

だから、このような状況のためにあなたのinputFilterの設定の重要な部分は、あなたが使用しているとき、あなたのフィールドセットの名前を再利用する必要があるということです。$this->add($input, $name = null)InputFilterクラス内にあります。

+0

ありがとうございます@Kwido、今は正常に動作します。 – pandomic

関連する問題