簡體   English   中英

ZF2嵌套數據驗證

[英]ZF2 nested data validation

我正在嘗試進行驗證。 我將數據以以下格式發布到控制器:

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

我將字段/過濾器和表單划分為不同的類,然后將其收集在表單的控制器中,如下所示:

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

但是它不能正常工作,看起來只是忽略嵌套數組(或忽略所有內容)。 我錯過了什么?

謝謝。

如果使用InputFilter類,則需要像設置表單(包括字段集)的方式一樣設置inputfilter。

因此,當您具有如下結構:

  1. 我的表格
    1.1 NestedFieldset
    1.2 AnotherFieldset

您的inputfilter必須具有相同的結構:

  1. 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的重要部分是,在使用以下代碼時,您需要重用字段集的名稱: InputFilter類中的$this->add($input, $name = null)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM