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

Recuperar datos en un form de ZF

Estas en el tema de Recuperar datos en un form de ZF en el foro de Zend en Foros del Web. Llevo varios días haciendo pruebas y demás con el Framework de Zend, y siguiendo ejemplos y demás pues mas o menos voy entendiendo algunas cosas. ...
  #1 (permalink)  
Antiguo 03/08/2011, 07:49
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Recuperar datos en un form de ZF

Llevo varios días haciendo pruebas y demás con el Framework de Zend, y siguiendo ejemplos y demás pues mas o menos voy entendiendo algunas cosas.
Pero hay otras que se me escapan hasta que no le coja un poco de práctica y entienda como funciona.

El caso es el siguiente, para recuperar los datos en un form para editar, tengo el form que está a continuación. Bajo las líneas comentadas, el parámetro 'nombre' es el que marca los valores de:
"<input type="text" name="nombre" id="nombre" value="" size="30" maxlength="30" />"
Mientras lo tengo así no me retorna los valores de la DB dentro de los imput.

El tema es que si cambio el parámetro 'nombre' por el nombre del campo que quiero tomar 'emp_nombre' si muestra dentro del imput el valor correspondiente.
Pero también me cambia los valores del imput, dejando a la vista los nombres reales de las columnas de la db:
"<input type="text" name="emp_nombre" id="emp_nombre" value="EMPRESA" size="30" maxlength="30" />"

Esto me pasa con los demás campos que estoy probando.

Como se puede hacer para tener los parámetros del imput de una forma, y el valor de value con el valor de la DB?

PD.: Si no me he explicado bien u os surgen dudas me lo comentáis e intento explicarlo mejor o de otra forma

Gracias de antemano por pasar.

El form:
Código PHP:
class Application_Form_Empresa extends Zend_Form
{
    public function 
init()
    {
        
$this->setName('empresa');

        
$id = new Zend_Form_Element_Hidden('id');
        
$id->addFilter('Int');
        
        
/* Si cambio 'nombre' por el nombre 
           de la tabla 'emp_nombre' funciona. */
        
$nombre = new Zend_Form_Element_Text('nombre');
        
$nombre->setLabel('Nombre')
               ->
setRequired(true)
               ->
addFilter('StripTags')
               ->
addFilter('StringTrim')
               ->
setAttrib('size'30)
               ->
setAttrib('maxlength'30)
               ->
addValidator('NotEmpty');

        
$cif = new Zend_Form_Element_Text('cif');
        
$cif->setLabel('Cif')
              ->
setValue('')
              ->
setRequired(true)
              ->
addFilter('StripTags')
              ->
addFilter('StringTrim')
              ->
setAttrib('size'30)
              ->
setAttrib('maxlength'10)
              ->
addValidator('NotEmpty');

        
$submit = new Zend_Form_Element_Submit('submit');
        
$submit->setAttrib('id''submitbutton');

        
$this->addElements(array($id$nombre$cif$submit));
    }

El action:
Código PHP:
    public function editAction()
    {
        
$form = new Application_Form_Empresa();
        
$form->submit->setLabel('Save');
        
$this->view->form $form;
        
        if (
$this->getRequest()->isPost())
        {
            
$formData $this->getRequest()->getPost();
            if (
$form->isValid($formData))
            {
                
$id = (int)$form->getValue('id');
                
$nombre $form->getValue('nombre');
                
$cif $form->getValue('cif');
                
$empresas = new Application_Model_DbTable_Empresas();
                
$empresas->updateEmpresa($id$nombre$cif);
                
$this->_helper->redirector('index');
            }
            else
            {
                
$form->populate($formData);
            }
        }
        else
        {
            
$id $this->_getParam('id'0);
            if (
$id 0)
            {
                
$empresas = new Application_Model_DbTable_Empresas();
                
$form->populate($empresas->getEmpresa($id));
            }
        }
    } 
El model:
Código PHP:
    public function getEmpresa($id)
    {
        
$id = (int)$id;
        
$row $this->fetchRow('emp_id = ' $id);
        if (!
$row)
        {
            throw new 
Exception("Could not find row $id");
        }
        
        return 
$row->toArray();
    }

    public function 
updateEmpresa($id$nombre$cif)
    {
        
$data = array(
            
'emp_nombre' => $nombre,
            
'emp_cif' => $cif,
        );
        
        
$this->update($data'emp_id = '. (int)$id);
    } 
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #2 (permalink)  
Antiguo 03/08/2011, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Recuperar datos en un form de ZF

Es perfectamente posible, solo tienes que pasarle los valores correctos a populate:
Código PHP:
Ver original
  1. $form->populate(array(
  2.      'nombre' => $row['emp_nombre'],
  3.      'cif' => $row['emp_cif']
  4. ));

Saludos.
  #3 (permalink)  
Antiguo 03/08/2011, 08:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Recuperar datos en un form de ZF

Eso lo puedes lograr con populate, indicale la llave con el nombre del campo y el valor con el nombre que hayas colocado en la base de datos.

Edito: Ahhhh, se me adelantaron y doblemente
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 03/08/2011, 11:26
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: Recuperar datos en un form de ZF

Perfecto!!! Pues otra cosita más que he aprendido.

Muchas gracias a los dos.

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight

Etiquetas: frameworks-y-php-orientado-a-objetos, recuperar, tabla, formulario
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 13:36.