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

problemas al crear un formulario

Estas en el tema de problemas al crear un formulario en el foro de Zend en Foros del Web. soy nuevo en este tema y estoy tratando de crear un form con zend framework y el problemas es que no me carga los datos ...
  #1 (permalink)  
Antiguo 13/01/2011, 13:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
problemas al crear un formulario

soy nuevo en este tema y estoy tratando de crear un form con zend framework y el problemas es que no me carga los datos que le coloco en los text. No teniendo como se los pasa, tengo el codigo, pero no se que parte pasarle? desde ya muchas gracias
  #2 (permalink)  
Antiguo 13/01/2011, 14:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

"Show me the code". :)
  #3 (permalink)  
Antiguo 13/01/2011, 14:45
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

ok - Show me the code


ClientesMapper.php
[PHP]
<?php

class Application_Model_ClientesMapper {

protected $_dbTable;

public function setDbTable($dbTable) {
if (is_string($dbTable)) {
$dbTable = new $dbTable();
}
if (!$dbTable instanceof Zend_Db_Table_Abstract) {

throw new Exception('Invalid table date gateway provided');
}

$this->_dbTable = $dbTable;
return $this;
}

public function getDbTable() {
if (null === $this->_dbTable) {
$this->setDbTable('Application_Model_DbTable_Clientes' );
}
return $this->_dbTable;
}

public function save(Application_Model_clientes $clientes) {


$data = array(
'idclientes' => $clientes->getidclientes(),
'apellido' => $clientes->getapellido(),
'nombre' => $clientes->getnombre(),
'domicilio' => $clientes->getdomicilio());

if (null === ($id = $clientes->getidclientes())) {
unset($data['idclientes']);
$this->getDbTable()->insert($data);
} else {
$this->getdbTable()->update($data, array('idclientes = ?' => $id));
}
}

public function find($id, Application_Model_clientes $clientes) {
$result = $this->getDbTable()->find($id);
if (0 == count($result)) {
return;
}

$row = $result->current();
$clientes->setidclientes($row->idclientes)
->setapellido($row->apellido)
->setnombre($row->nombre)
->setdomicilio($row->domicilio);
}

public function fetchAll() {

$resultSet = $this->getDbTable()->fetchAll();
$entries = array();
foreach ($resultSet as $row) {

$entry = new Application_Model_Clientes();

$entry->setidclientes($row->idclientes)
->setapellido($row->apellido)
->setnombre($row->nombre)
->setdomicilio($row->domicilio);
$entries[] = $entry;
}
return $entries;
}

}


[PHP]

Clientes.php // esto esta dentro del forms

Código PHP:
<?php

class Application_Form_Clientes extends Zend_Form
{

    public function 
init()
    {

        
$this->setMethod('post');

        
$this->addElement('text''nombre', array (
                
'label' => 'Your is name:',
                
'requiered' => true,
                
'filters' => array ('stringTrim'),
               
                ));

        
        
$this->addElement('text''apellido', array (
                
'label' => 'Your is last:',
                
'requiered' => true,
               ));


        
$this->addElement('submit''submit', array (
                
'ignore'  => true,
                
'label'     => 'Sign Clientes',

        ));
   }


}
Gracias por la ayuda
  #4 (permalink)  
Antiguo 13/01/2011, 15:19
 
Fecha de Ingreso: diciembre-2010
Ubicación: Santiago, Chile
Mensajes: 16
Antigüedad: 14 años
Puntos: 3
Respuesta: problemas al crear un formulario

No veo el lugar donde asocias el contenido de la tupla con el formulario, cosa que podrías hacer:

* A través del form: con un populate(array) o setDefaults(array)
* A través de cada elemento: con un setValue(value)

También te podría método isValid(array), pero gatillarias las validaciones.
  #5 (permalink)  
Antiguo 13/01/2011, 15:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

Esto tengo dentro del model / clientes.php

Código PHP:
<?php

class Application_Model_Clientes {

    protected 
$_idclientes;
    protected 
$_nombre;
    protected 
$_apellido;
    protected 
$_domicilio;

    public function 
__construct(array $options null) {

        if (
is_array($options)) {
            
$this->setOptions($options);
        }
    }

    public function 
__set($name$value) {
        if ((
'mapper' == $name) || !method_exists($this$method)) {

            throw new 
Exception('Invalid Clientes property');
        }
        
$this->$method($value);
    }


    public function 
__get($name)
    {
        
$method 'get' $name;
        if((
'mapper' == $name) || !method_exists($this$method)){
            throw new 
Exception('Invalid Cliente Property');
        }
        return 
$this->$method();
    }

    public function 
setOptions(array $options)
    {
        
$methods get_class_methods($this);
        foreach (
$options as $key => $value){

            
$method 'set' ucfirst($key);
            if (
in_array ($method$methods)){
                
$this-> $method($value);
            }
        }
        return 
$this;
    }

    public function 
setidclientes ($text)
    {
        
$this->_idclientes = (string)$text;
        return 
$this;

    }

    public function 
getidclientes ()
    {
          return 
$this->_idclientes;
    }

    public function 
setnombre($nombre)
    {
        
$this->_nombre = (string) $nombre;
        return 
$this;

    }

    public function 
getnombre ()
    {
          return 
$this->_nombre;
    }
    
    public function 
setapellido ($apellido)
    {
        
$this->_apellido = (string)$apellido;
        return 
$this;

    }

    public function 
getapellido ()
    {
          return 
$this->_apellido;
    }

    public function 
setdomicilio ($domicilio)
    {
        
$this->_domicilio = (string)$domicilio;
        return 
$this;

    }

    public function 
getdomicilio ()
    {
          return 
$this->_domicilio;
    }
}
y esto dentro del controlller/ clientesController.php

Código PHP:
<?php

class ClientesController extends Zend_Controller_Action {

    public function 
init() {
        
/* Initialize action controller here */
    
}

    public function 
indexAction() {
        
$clientes = new Application_Model_ClientesMapper();
        
$this->view->entries $clientes->fetchAll();
    }

    public function 
signAction() {
        
$request $this->getRequest();
        
$form = new Application_Form_Clientes();

        if (
$this->getRequest()->isPost()) {

            if (
$form->isValid($request->getPost())) {
                
$ape = new Application_Model_Clientes($form->getValues());
                
$mapper = new Application_Model_ClientesMapper();
                
$mapper->save($ape);
                return 
$this->_helper->redirector('index');
            }
        }
        
$this->view->form $form;
    }

}
  #6 (permalink)  
Antiguo 13/01/2011, 15:37
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Que es lo que no te carga ?, el modelo con los datos del form ? o los inputs cuando falla la validación ?

Nota: es required no requiered en addElement
  #7 (permalink)  
Antiguo 13/01/2011, 15:53
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

el problema esta en que no me carga los datos a la bd, por ejemplo en la bd tengo

idclientes, nombre, apellido, domicilio

y lo que se me carga es el idclientes.

Idclientes se carga con una seq de postgres. pero no se muy bien cual es la parte que esta fallando, Lo que pasa es que estoy aprendiendo con un par de ejemplo y el primer ejemplo era que me mostrara los datos de la bd y eso funciona, pero al momento de carga, no.
  #8 (permalink)  
Antiguo 13/01/2011, 16:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Sigo sin ver bien el problema, no te entiendo bien, el error es que no guarda los datos en la bbdd ?
  #9 (permalink)  
Antiguo 13/01/2011, 16:22
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

si ese es el problema, no me carga los datos en la bd
  #10 (permalink)  
Antiguo 13/01/2011, 17:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Es raro que no lanze una Exception, proba debugear la data antes del insert

Código PHP:
Ver original
  1. //Application_Model_ClientesMapper
  2. public function save(Application_Model_clientes $clientes)
  3. {
  4.    $data = array(
  5.       'idclientes' => $clientes->getidclientes(),
  6.       'apellido'   => $clientes->getapellido(),
  7.       'nombre'   => $clientes->getnombre(),
  8.      'domicilio' => $clientes->getdomicilio()
  9.    );
  10.  
  11.    if (null === ($id = $clientes->getidclientes())) {
  12.       unset($data['idclientes']);
  13.       Zend_Debug::dump($data);
  14.       $this->getDbTable()->insert($data);
  15.    } else {
  16.       $this->getdbTable()->update($data, array('idclientes = ?' => $id));
  17.    }
  18. }

comproba que los datos corresponden con los campos de la bbdd y comenta el redirect en el controller
  #11 (permalink)  
Antiguo 14/01/2011, 14:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

en esta parte me guarda bien los datos, lo que hice fue reemplazar los datos de los campos a cargar; Lo que no entiendo y no se es de donde me trae los datos

Código PHP:
public function save(Application_Model_clientes $clientes)

{
   
$data = array(
      
'idclientes' => $clientes->getidclientes(),
      
'apellido'   => $clientes->getapellido(),
      
'nombre'   => $clientes->getnombre(),
     
'domicilio' => $clientes->getdomicilio()
   );
   if (
null === ($id $clientes->getidclientes())) {
      unset(
$data['idclientes']);
      
Zend_Debug::dump($data);
      
$this->getDbTable()->insert($data);
   } else {
     
$this->getdbTable()->update($data, array('idclientes = ?' => $id));
   }

  #12 (permalink)  
Antiguo 14/01/2011, 16:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Funciona bien ahora ?, lo que no tenes claro es el proceso, desde que recibe los datos hasta que se guardan?

Saludos.
  #13 (permalink)  
Antiguo 15/01/2011, 06:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

Si ese el problema, no entiendo muy bien el proceso, habria alguna forma de que me lo explique, como es el proceso
  #14 (permalink)  
Antiguo 15/01/2011, 08:21
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Deberías leer sobre Data Mapper.
  #15 (permalink)  
Antiguo 15/01/2011, 08:43
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

ok, muchas gracias, ahora lo estoy leyendo, para mi el problema esta en algun nombre de algo que me haya equivocado, u otra cosa que me falte, por que lo que hice fue colocar datos manuales, en el lugar donde deberia recuperar los datos y eso funciona bien, es como que los datos que escribo en los text, no hay relación en donde tiene que recuperarlos, eso es lo que no entiendo.
  #16 (permalink)  
Antiguo 15/01/2011, 09:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas al crear un formulario

Hace un dump:

Código PHP:
Ver original
  1. ...
  2. $ape = new Application_Model_Clientes($form->getValues());
  3. Zend_Debug::dump($ape);
  4. ...

a ver si se setean los datos correctamente, ten en cuenta que Application_Model_Clientes::setOptions hace un ucfirst y busca los metodos setProperty y los de tu clase son setproperty(en linux te van a dar problemas).
  #17 (permalink)  
Antiguo 15/01/2011, 10:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 14 años
Puntos: 0
Respuesta: problemas al crear un formulario

Muchisimas Gracias, Funciono, ahora asi puedo dar de alta. era eso nada mas puse en mayuscula la primeras letras del set, debe ser por lo que colocaste, yo trabajo con linux.

Etiquetas: 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 16:54.