Zend framework 验证默认值
我有一个由选择/下拉列表组成的表单。我已将其默认值设置为-1。提交表单时,我希望验证提交的值是否不等于默认值。我尝试了Zend framework 验证默认值,zend-framework,Zend Framework,我有一个由选择/下拉列表组成的表单。我已将其默认值设置为-1。提交表单时,我希望验证提交的值是否不等于默认值。我尝试了setRequired(true),但据我所知,这只是添加notEmpty验证器的一种方便方法,而这并不是我真正想要的 这是我表格的一部分: $select = new Zend_Form_Element_Select('myselect'); $select->setMultiOptions(array( '
setRequired(true)
,但据我所知,这只是添加notEmpty
验证器的一种方便方法,而这并不是我真正想要的
这是我表格的一部分:
$select = new Zend_Form_Element_Select('myselect');
$select->setMultiOptions(array(
'-1' => 'Gender',
'0' => 'Female',
'1' => 'Male'
))
->addValidator(new Zend_Validate_Int(), false);
$this->setDefaults(array('myselect' => -1));
这是我的控制器:
if ($this->getRequest()->isPost()) {
$form = new My_Form_Contact();
if ($form->isValidPartial(array('myselect' => $this->getRequest()->getPost('myselect')))) {
// "myselect" is valid
}
我需要使用isValidPartial
方法,因为我需要使用不同的逻辑,这取决于哪些元素的值与其默认值不同。我想我需要的是一个notEqual验证器,但我找不到。我知道可以制作自己的验证器,但我想先问问是否有更简单的方法。我还查看了Zend\u Validate\u idential
,但我认为我不能在这种情况下使用它
总而言之:我只希望在提交的值不等于默认值时成功验证我的选择。最简单的解决方案是使用空字符串作为默认值:
$select->setMultiOptions(array(
'' => 'Gender',
'0' => 'Female',
'1' => 'Male'
))
->addValidator(new Zend_Validate_Int(), false)
->addValidator(new Zend_Validate_NotEmpty(), false);
$this->setDefaults(array('myselect' => ''));
但我猜你已经想到了,并且出于某种原因打折了
因此,下一个最简单的方法是使用GreaterThan()
:
我希望这就是您要找的。谢谢。GreaterThan验证器在这种情况下可以工作,但如果我使用的是文本框,则不能工作。不过,我意识到这不是问题所在。:-)在这种情况下,使用默认值为空的notEmpty验证器也应该有效,因此我将接受答案。然而,你知道如何使用文本框吗?例如,有一个默认值为“在此处输入您的姓名”的文本框。只是一个更新:第一种使用NotEmpty验证器的方法不起作用,所以我使用了第二种有效的方法。:)
$select->setMultiOptions(array(
'-1' => 'Gender',
'0' => 'Female',
'1' => 'Male'
))
->addValidator(new Zend_Validate_Int(), false)
->addValidator(new Zend_Validate_GreaterThan(-1), false);
$this->setDefaults(array('myselect' => '-1'));