ZF: как проверить запрос GET? - PullRequest
1 голос
/ 23 марта 2011

У меня есть форма.Есть два поля выбора, которые не могут быть 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 ]

1 голос
/ 23 марта 2011

Установка Zend_Validate_NotEmpty валидатора недостаточно.Это применимо, только если значение было установлено в этом поле.Если будет установлено пустое значение типа '', оно не будет проверено.Тем не менее, по умолчанию он установлен на Null Я думаю, и это означает, что значение не было установлено.Вы должны сказать ему, что это 'presence' => 'required', или использовать setRequired().

1 голос
/ 23 марта 2011
$data = $this->_request->getParam('getkey');    
if($data)
{
    //do something
}
else{
    throw new Zend_Exception("No GET value");
}
0 голосов
/ 23 марта 2011

Это то, как я использую для работы с формами ...

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

...