2011-03-23 34 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