php zend-framework get request

php - ZF: ¿cómo verificar la solicitud GET?



zend-framework request (3)

Tengo un formulario. Hay dos selectboxes que no pueden ser 0: campo1, campo2. Si configuro el método POST, funciona bien. Si GET - mal.

Aquí la parte de mis controladores:

$this->view->searchForm = new Default_Form_Parameters(); $data = $this->getRequest()->getParams(); if ($this->view->searchForm->isValid($data)) { }

Si tengo la siguiente solicitud, entonces esValid devuelve falso. Está bien.

http://site.ru/?field1=0&field2=0

Si tengo otra solicitud como

http://site.ru/?crash

entonces isValid devuelve verdadero. Eso está mal.

¿Alguna idea de cuál es el problema?

PD aquí uno de los campos con validador:

$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));


Así es como uso para trabajar con formularios ...

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; }

como puedes ver, utilizo "getPost ()" y no "getParams ()", pero eso se debe a mi método FORM.


Establecer un validador Zend_Validate_NotEmpty no es suficiente. Solo se aplica si se ha establecido un valor en este campo. Si se configura un valor vacío como '''' , no se validaría. Sin embargo, por defecto está establecido en Null , creo, y eso significa que no se ha establecido ningún valor. Tienes que decirle que eso es ''presence'' => ''required'' , o usa setRequired() .


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