ZF2 嵌套数据验证
ZF2 nested data validation
我正在尝试进行验证。我已将数据以如下格式发布到控制器:
[
'property' => 'value',
'nested_property' => [
'property' => 'value',
// ...
]
]
我已将 fields/filters 和表单分成不同的 类,然后将它们集中在表单的控制器中,如下所示:
public function __construct($name, $options)
{
// ...
$this->add(new SomeFieldset($name, $options));
$this->setInputFilter(new SomeInputFilter());
}
但它不能正常工作,看起来它只是忽略了嵌套数组(或忽略了所有内容)。我错过了什么?
谢谢。
如果您使用 InputFilter
class.
,则需要像设置表单(包括字段集)那样设置输入过滤器
所以当你有这样的结构时:
- 我的表格
1.1 嵌套字段集
1.2 另一个字段集
您的输入过滤器需要具有相同的结构:
- MyFormInputFilter
1.1 嵌套字段集输入过滤器
1.2 另一个字段集输入过滤器
一些示例代码:
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
classes 中。
我正在尝试进行验证。我已将数据以如下格式发布到控制器:
[
'property' => 'value',
'nested_property' => [
'property' => 'value',
// ...
]
]
我已将 fields/filters 和表单分成不同的 类,然后将它们集中在表单的控制器中,如下所示:
public function __construct($name, $options)
{
// ...
$this->add(new SomeFieldset($name, $options));
$this->setInputFilter(new SomeInputFilter());
}
但它不能正常工作,看起来它只是忽略了嵌套数组(或忽略了所有内容)。我错过了什么?
谢谢。
如果您使用 InputFilter
class.
所以当你有这样的结构时:
- 我的表格
1.1 嵌套字段集
1.2 另一个字段集
您的输入过滤器需要具有相同的结构:
- MyFormInputFilter
1.1 嵌套字段集输入过滤器
1.2 另一个字段集输入过滤器
一些示例代码:
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
classes 中。