Foros del Web » Programando para Internet » PHP » Zend »

Pasar parametros a un formulario ya instanciado

Estas en el tema de Pasar parametros a un formulario ya instanciado en el foro de Zend en Foros del Web. Hola a todos, Vereis, tengo un formulario en el que me gustaria comprobar si se ha declarado un parametro, en caso de que dicho parametro ...
  #1 (permalink)  
Antiguo 04/10/2012, 04:11
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 14 años, 1 mes
Puntos: 11
Pasar parametros a un formulario ya instanciado

Hola a todos,

Vereis, tengo un formulario en el que me gustaria comprobar si se ha declarado un parametro, en caso de que dicho parametro haya sido declarado se lo quiero pasar de nuevo al formulario pero sin tener que instanciarlo de nuevo para poder ejecutar una accion u otra pero de forma que me mantenga los valores que habia introducido el usuario anteriormente.

La idea es hacer algo asi:

Código PHP:
public function miAction(){
   
$form = new Application_Form_miformulario();
   if(
$this->_request->isPost()){
      if(
$form->isValid($this->_getAllParams())){
          
// ejecuto lo que sea
      
}
      else{
         if(
$_POST['parametro']){
         
// vuelvo a mostrar el formulario con la informacion que ha introducido 
         //el usuario pero pasandole el parametro 
         
}
      }
   }
   else{
     
// muestro el formulario a mi view
   
}

y el formulario seria algo asi:

Código PHP:
class Application_Form_miformulario extends Zend_Form{
   private 
$parametro $_POST['parametro']; // esto obviamente no seria asi
   
public function init(){
         if(
$parametro){
              
// hago lo que sea
         
}
         else{
              
// hago lo que sea
         

   }

No se si se entiende lo que quiero hacer. La idea es que si el formulario no es valido, se vuelva a mostrar el mismo formulario con la informacion que ha instroducido el usuario pero cambiando un campo en funcion de ese parametro que haya introducido el usuario anteriormente.
No me interesa volver a instanciar el formulario, ya que si no se perderia toda la informacion que ha introducido el usuario anteriormente.
¿Alguien sabria como hacerlo?
  #2 (permalink)  
Antiguo 04/10/2012, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 2 meses
Puntos: 2135
Respuesta: Pasar parametros a un formulario ya instanciado

Siempre puedes alterar/cambiar un valor en específico usando el método setValue del elemento que quieras, ej:
Código PHP:
Ver original
  1. $form = new MyForm();
  2. $form->myElement->setValue("foo");

Saludos.
  #3 (permalink)  
Antiguo 04/10/2012, 16:32
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 18 años, 10 meses
Puntos: 24
Respuesta: Pasar parametros a un formulario ya instanciado

Y con respecto al flujo de trabajo podria ser así

Código PHP:
Ver original
  1. public function miAction(){
  2.    
  3.    $form = new Application_Form_miformulario();
  4.    
  5.    if ($this->_request->isPost()) {
  6.       if ($form->isValid($this->_getAllParams())) {
  7.           // Al final redireccionas
  8.       }
  9.       if ($_POST['parametro']) {
  10.          //Seteas en $form
  11.       }
  12.    }
  13.  
  14.    $this->view->form = $form
  15.    
  16. }
  #4 (permalink)  
Antiguo 04/10/2012, 16:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 2 meses
Puntos: 2135
Respuesta: Pasar parametros a un formulario ya instanciado

Solo que para respetar el flujo de Zend, es mejor usar $this->_getParam(), a $_POST directamente
  #5 (permalink)  
Antiguo 05/10/2012, 02:39
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 14 años, 1 mes
Puntos: 11
Respuesta: Pasar parametros a un formulario ya instanciado

Hola, gracias a todos por las respuestas.

Al final lo he podido arreglar metiendo "a pelo" las instrucciones para setear las opciones directamente en el controller (algo parecido a lo que tu me decias GatorV pero en lugar de hacer un setValue() he tenido que hacer primero un clearMultioptions() y luego un setMultioptions() directamente en el controller dado que es un campo de tipo Zend_Form_Element_Select()).

Gracias tambien a ti por la indicacion lisandro Arg, he heredado de mis malas practicas de PHP la mania de poner siempre sentencias "else" aunque no sean necesarias :P

Un saludo!

Etiquetas: parametros, zend-form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.