我有一张表格。有两个选择框不能为0:field1,field2。 如果我设置POST方法,那么它工作正常。如果GET - 错误。
这是我的控制员的一部分:
$this->view->searchForm = new Default_Form_Parameters();
$data = $this->getRequest()->getParams();
if ($this->view->searchForm->isValid($data)) {
}
如果我有以下请求,则isValid返回false。没关系。
http://site.ru/?field1=0&field2=0
如果我有其他请求,例如
http://site.ru/?crash
然后isValid返回true。那是错的。
问题是什么?
PS这里有一个带验证器的字段:
$required = new Zend_Validate_NotEmpty();
$required->setType ($required->getType() | Zend_Validate_NotEmpty::INTEGER | Zend_Validate_NotEmpty::ZERO);
$input = new Zend_Form_Element_Select('cat');
$input->setLabel('theme')
->addMultiOptions(array('0' => ' ----------- ') + $categories)
->addValidators (array ($required));
答案 0 :(得分:1)
$data = $this->_request->getParam('getkey');
if($data)
{
//do something
}
else{
throw new Zend_Exception("No GET value");
}
答案 1 :(得分:1)
设置Zend_Validate_NotEmpty
验证器是不够的。仅当已将值设置为此字段时才适用。如果设置了''
之类的空值,则无法验证。但是,默认情况下,我认为它设置为Null
,这意味着没有设置任何值。您必须告诉它'presence' => 'required'
,或使用setRequired()
。
答案 2 :(得分:0)
这就是我用来处理表单的方式......
public function createAction()
{
$form = new Application_Form_PageCreate();
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
//do what you need
}
}
$this->view->form = $form;
}
你可以看到我使用“getPost()”而不是“getParams()”但这是我的FORM方法的原因