Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2011, 07:49
Avatar de Uncontroled_Duck
Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años
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