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