2011-03-23 64 views
1

我有一个表格。有两个选择框不能是0:field1,field2。 如果我设置POST方法,那么它工作正常。如果GET - 错误。ZF:如何检查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

你可以显示表单代码 - 验证器分配给该领域? – singles 2011-03-23 07:29:03

回答

1

设置Zend_Validate_NotEmpty验证程序是不够的。它仅适用于已将值设置为此字段的情况。如果将设置一个空值,如'',则不会生效。但是,默认情况下,它被设置为Null我认为这意味着没有设置值。您必须告诉它,这是'presence' => 'required',或使用setRequired()

1
$data = $this->_request->getParam('getkey');  
if($data) 
{ 
    //do something 
} 
else{ 
    throw new Zend_Exception("No GET value"); 
} 
+0

谢谢。那么为什么Valid以这种方式出现错误? – Anthony 2011-03-23 06:42:30

+0

'field1'和'field2'可能被允许为空。 – Htbaa 2011-03-23 07:29:34

+0

@Htbaa - 不允许为空。上面添加的代码片段。 – Anthony 2011-03-23 07:39:28

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

+0

我更喜欢使用在sitename.com/controller/action/param1/key1/param2/key2/param3/key3中写的url,让我正确地将它们作为Params()而不是GET表示法吗?param1 = key1&param2 = key2 – MiPnamic 2011-03-23 08:02:38

+0

谢谢。我知道这个帖子很好。获取方法有问题。我几分钟前解决了它) – Anthony 2011-03-23 08:04:48