[英]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。
因此,當您具有如下結構:
您的inputfilter必須具有相同的結構:
一些示例代碼:
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.