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