ZF:如何查看GET请求?

时间:2011-03-23 06:29:31

标签: php zend-framework get request

我有一张表格。有两个选择框不能为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));

3 个答案:

答案 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方法的原因