我正在尝试制作我的验证工作。我将数据发布到控制器,格式如下:
[
'property' => 'value',
'nested_property' => [
'property' => 'value',
// ...
]
]
我将字段/过滤器和表单分成不同的类,然后将它们一起收集在Form的控制器中,如下所示:
public function __construct($name, $options)
{
// ...
$this->add(new SomeFieldset($name, $options));
$this->setInputFilter(new SomeInputFilter());
}
但它没有正常工作,看起来它只是忽略嵌套数组(或忽略所有内容)。我错过了什么?
谢谢。
答案 0 :(得分:1)
如果您使用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的重要部分是,在$this->add($input, $name = null)
类中使用InputFilter
时,需要重复使用字段集的名称。