我的 ZF2 应用程序中有一个带有选择元素的表单。在 ZF1 中,它会自动添加一个验证器来检查用户是否试图向其发布无效值。
所以只是为了踢球和咯咯笑,我决定看看如果我使用 Firebug 更改其中一个选项的值然后提交它会发生什么。结果:它以优异的成绩通过了。不用说,这不好。
以下是 select 选项的相关代码:
$this->add(array (
'name' => 'role',
'type' => 'Select',
'attributes' => array (
'id' => 'role'
),
'options' => array (
'label' => 'Role:',
'value_options' => $roleOptions,
'column-size' => 'sm-6',
'label_attributes' => array('class' => 'col-sm-2'),
)
));
(注意:$roleOptions 作为参数传入表单)
这是验证器代码的相关部分:
$inputFilter->add($factory->createInput(array (
'name' => 'role',
'filters' => array(),
'validators' => array(
$notEmpty
),
)));
(显然,$notEmpty 是 NotEmpty 验证器的一个实例)
这里发生了什么?ZF2 是否不再添加验证器以确保它收到的值是最初是选项列表的一部分?我现在必须手动添加验证器来选择选项吗?
编辑:我检查了文档,它说选择元素会自动添加一个数组验证器。它应该可以工作,但事实并非如此。我什至尝试更改服务器端的值,结果相同——验证器没有获取无效值。
是的,我正在检查表格是否有效。
编辑#2:为清楚起见,这里是整个表单的代码