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

Problemas para hacer modificaciones

Estas en el tema de Problemas para hacer modificaciones en el foro de Zend en Foros del Web. Buenas DIas a todos, estoy empezando con zend framework y tengo el siguiente problema, me sale el siguiente error: Fatal error: Call to undefined method ...

  #1 (permalink)  
Antiguo 03/03/2011, 08:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Problemas para hacer modificaciones

Buenas DIas a todos, estoy empezando con zend framework y tengo el siguiente problema, me sale el siguiente error:

Fatal error: Call to undefined method Application_Model_DbTable_Clientes::getIdclientes( ) in /var/www/qaz/application/controllers/ClientesController.php on line 75

se que es por que esta llamando a una funcion desconocida, pero lo coloque y me sigue saliendo. Desde ya muchas gracias
  #2 (permalink)  
Antiguo 03/03/2011, 08:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problemas para hacer modificaciones

El error no tiene que ver con Zend, simplemente en tu clase no existe el metodo que estas invocando, estas trabajando en *nix, comproba las mayusculas y minusculas.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 03/03/2011, 09:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Bien, pero la clase la coloque y me sigue dando ese error. La clase es la siguiente :

public function populate($row)
{
if (isset ($row->id)) {
$this->setId($row->id);
}

y esta colocanda en Models/Clientes.php.

eso esta bien???
  #4 (permalink)  
Antiguo 03/03/2011, 09:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Pues esa es otra función (populate) el error te lo indica porque no existe el método getIdclientes().

Saludos.
  #5 (permalink)  
Antiguo 03/03/2011, 09:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problemas para hacer modificaciones

estas llamando a un metodo de un dbtable, la clase deberia estar en

application/models/DbTable y el fichero llamarse Clientes.php

Nota: mayusculas y minusculas importan.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 03/03/2011, 09:46
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Disculpen mi ignorancia, ya lo hice, pero me salen otros errores, esto es lo que hice:

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


public function populate($row)
{
if (isset ($row->id)) {
$this->setId($row->id);
}

}

y me sale este error:

Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, null given, called in /var/www/qaz/application/controllers/ClientesController.php on line 74 and defined in /var/www/qaz/library/Zend/Form.php on line 2023
  #7 (permalink)  
Antiguo 03/03/2011, 10:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Creo que deberías de leer un libro básico de PHP, ya que tus errores los resolverías más rápido. El error que te marca es porque estas llamando al método populate sin pasarle ningún valor.

Antes de meterte con Zend Framework, te recomendaría leyeras un libro de PHP, para que entiendas como es el flujo de la programación, los tipos de valores, como pasar parámetros a las funciones, etc.

Saludos.
  #8 (permalink)  
Antiguo 03/03/2011, 10:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Bien, Te hare caso, pero me ayudarias un segundo a terminar esto??? yo lo unico que quiero es que me traiga los datos a mis variables este es el codigo.

Clientescontroller.php

Código PHP:
 public function updateAction()
    {
         
//Indicamos el título de la página
            
$this->view->title "Editar Clientes";
                    
//Añadimos el título, delante del título definido por defecto para nuestra aplicación
            
$this->view->headTitle($this->view->title'PREPEND');
        
//Instanciamos el formulario
         
$form = new Application_Form_Clientes();
        
//Especificamos el nombre del botón de envío del formulario
            
$form->submit->setLabel('as');
            
//Asignamos a la vista el formulario
            
$this->view->form $form;

                    if (
$this->getRequest()->isPost()) {//Si se envían los datos, los recuperamos del formulario
                
$formData $this->getRequest()->getPost();
                            if (
$form->isValid($formData)) {//Validamos que los datos recibidos sean correctos
                    //Asignamos los valores recuperados a variables
                        
$id $form->getValue('idclientes');
                    
$nombre $form->getValue('nombre');
                    
$apellido $form->getValue('apellido');
                    
//Creamos el modelo
                        
$clieup = new Application_Model_DbTable_Clientes();
                                            
//Actualizamos los datos del libro
                    
$clieup->updateClientes($id$nombre$apellido);
                    
//Vamos a la página principal de la aplicación
                
$this->_redirect('/');
                            }else{
//Si los datos del formulario, no son válidos, se muestra el formulario con los datos de nuevo.
                    
$form->populate($formData);
                }
                    }else{
//Mostramos los datos del libro en caso de no haber enviado los datos al servidor para actualizar el libro
                
$id $this->_getParam('id'0);
                if (
$id 0) {
                         
$Clientes = new Application_Model_DbTable_Clientes();
                
$form->populate($Clientes->getIdclientes($id));
                }
            }
    } 
es alli abajo donde me sale el error
  #9 (permalink)  
Antiguo 03/03/2011, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Verifica que tipo de datos te regresa getIdclientes ya que este debería ser un array.

Saludos.
  #10 (permalink)  
Antiguo 12/03/2011, 08:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

en getIdclientes me devuelve el numero de id que alla seleccionado, por ejemplos el 10, pero me sigue saliendo este error:

Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, null given, called in /var/www/qaz/application/controllers/ClientesController.php on line 76 and defined in /var/www/qaz/library/Zend/Form.php on line 2023
  #11 (permalink)  
Antiguo 12/03/2011, 09:15
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

estoy trando de entender el codigo y no entiendo esto:, por que desde aqui sale el error:
if ($this->getRequest()->isPost()) {//Si se envían los datos, los recuperamos del formulario.

que significa?? desde ya muchas gracias
  #12 (permalink)  
Antiguo 12/03/2011, 23:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

El primero $this->getRequest() te obtiene el objeto request actual, posteriormente llamas a isPost() que le pregunta al objeto request si el request actual es POST.

Saludos.
  #13 (permalink)  
Antiguo 14/03/2011, 06:27
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Bienn!!, resulta que yo le cambie esto y funciono algo.
en vez de poner isPost le puse isGet.
if ($this->getRequest()->isGet()) {//Si se envían los datos, los recuperamos del formulario

pero ahora me sale el error aca.
$formData = $this->getRequest()->getPost();

Desde ya muchas gracias.
  #14 (permalink)  
Antiguo 14/03/2011, 09:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Pues creo que es obvio el problema si lo analizas, getPost() te regresa los datos de Post, si tu estas preguntando si tu request es GET, tendrías que hacer getQuery() no?
  #15 (permalink)  
Antiguo 15/03/2011, 09:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Hola, mira ya casi tengo resuelto el problema, pero...... el problemas es que me pasa todo por get y no por post, como hago para que me lo pase por post????. Estoy un poco confundido. Desde ya muchas gracias.
  #16 (permalink)  
Antiguo 15/03/2011, 10:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Pues a tu formulario indicale que quieres que sea POST:
Código PHP:
Ver original
  1. $form->setMethod(Zend_Form::METHOD_POST);

Saludos.
  #17 (permalink)  
Antiguo 15/03/2011, 10:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

No, sigue sin funcionar, me esta matando esto jajaj!!

Yo tengo esto en mi controller update llama a un form y dentro de ese form le puse esto:
Código PHP:
$form->setMethod(Zend_Form::METHOD_POST); 
y luego verifico en el controller asi:

Código PHP:
echo $this->getRequest()->isPost() ."<br>"// si el request fue hecho por el método POST 
y me sale vacio si lo cambio por Get me sale 1.

Saludos
  #18 (permalink)  
Antiguo 15/03/2011, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Verifica que al hacer el render del fomulario el <form> tenga method="post" en tu view.

Saludos.
  #19 (permalink)  
Antiguo 15/03/2011, 13:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

bien, pero en mi view no tengo ningun form. yo he creado un form.
de esta forma:
zf create form clientes (ejemplo)

y dentro de ese form tengo esto:

Código PHP:
<?php

class Application_Form_Consulta extends Zend_Form
{
    public function 
init()
    {

        
//$this->getMethod('Post');

        
$this->setMethod(Zend_Form::METHOD_POST);
        
//$form->setMethod('post');

       /* $this->addElement('text','nombre', array(
            'label'=>'your is  name:',
            'required' =>true,
             'validators' => array(
                'EmailAddress',)
        ));
*/
    
$this->addElement('text''nombre', array (
                
'label' => 'Your is name:',
                
'required' => true,
                
'filters' => array ('stringTrim'),

                ));

        
$this->addElement('text''apellido', array (
                
'label' => 'Your is last:',
                
'required' => true,
               ));
        
    
$this->addElement('submit''submit', array (
                
'ignore'  => true,
                
'label'     => 'Sign Clientes',

        ));
   }

}
  #20 (permalink)  
Antiguo 15/03/2011, 14:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Si pero ese Form lo tienes que renderear en algún lado, y típicamente es en el View, donde despliegas el formulario, ahí asegurate que salga el <form> con method="post".

Saludos.
  #21 (permalink)  
Antiguo 15/03/2011, 14:54
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

lo coloque en el view aca: y no pasa nada ja
Código PHP:
  <a href="<?php echo $this->url(array( 'controller'=>'clientes''action'=>'update''method'=>'Post''id'=>$entry->idclientes));?>">Editar</a>
esta bien o no estoy entendiendo??? Disculpa las molestias quizas te moleste, pero estoy aprendiendo. Muchas gracias nuevamente
  #22 (permalink)  
Antiguo 15/03/2011, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

En tu view tienes que hacer el render de tu form en algún lado, por ejemplo:
Código PHP:
Ver original
  1. public function editAction()
  2. {
  3.         $form = new Application_Form_Clientes();
  4.         $this->view->form = $form;
  5. }

edit.phtml:
Código PHP:
Ver original
  1. <?php echo $this->form; ?>

Con eso mostrarías el form en tu action edit, y ahí podrías ver todos sus elementos de tu form y poder ver si se muestran realmente el method de tu form.

Saludos.
  #23 (permalink)  
Antiguo 15/03/2011, 15:06
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Bien, eso si ya estaba hecho, el problema que cuando hago esto:
Código PHP:
 $request $this->getRequest();
                        
//$form = new Application_Form_Clientes();
 
                            
[B][COLOR="Red"]  if ($this->getRequest()->isPost()) {
                
                            if (
$form->isValid($request->getPost())) {[/COLOR][/B]
 echo 
$this->view->bienvenido ;
                        
$id $form->getValue('idclientes');
                    
$nombre $form->getValue('nombre');
                    
$apellido $form->getValue('apellido');
                    
//Creamos el modelo

                        
$clieup = new Application_Model_DbTable_Clientes();
                                            
//Actualizamos los datos del cliente
                    
$clieup->updateClientes($id$nombre$apellido);
                    
//Vamos a la página principal de la aplicación
                
$this->_redirect('/');
                            }else{
//Si los datos del formulario, no son válidos, se muestra el formulario con los datos de nuevo.
                    
$form->populate($request);
                }
                    }else{
//Mostramos los datos del libro en caso de no haber enviado los datos al servidor para actualizar el libro
                
$id $this->_getParam('id'0);
                if (
$id 0) {
                         
$Clientes = new Application_Model_DbTable_Clientes();
                    
$form->populate($Clientes->getIdclientes($id));
                }
            } 
donde marque eso, con rojo asi esta el problema me saltea eso.
  #24 (permalink)  
Antiguo 15/03/2011, 15:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Pues sin poner cual es el error, ese bloque de código solamente se va a ejecutar cuando tu request sea POST.

Saludos.
  #25 (permalink)  
Antiguo 15/03/2011, 15:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

BIen, eso ya lo se, pero yo quiero pasar las cosas por metodo post, para que me funcione eso, pero ya no se que mas tocar.
No me sale ningun error, el problema es que no me lo guarda la actualziacion
  #26 (permalink)  
Antiguo 15/03/2011, 15:34
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Este error me sale cuando lo cambio a metodo get y isquery

Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, object given, called in /var/www/qaz/application/controllers/ClientesController.php on line 87 and defined in /var/www/qaz/library/Zend/Form.php on line 2023
  #27 (permalink)  
Antiguo 15/03/2011, 15:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Como te digo a la hora de imprimir el formulario asegúrate que se vea <form method="post"> ya en tu view, así puedes saber que los datos van a viajar por POST al hacer el submit de tu formulario.

Saludos.
  #28 (permalink)  
Antiguo 16/03/2011, 08:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

Buenos dias Gatorv, Aun sigo con problemas, no me lo reconoce, que otro cambio puedo hacer???
  #29 (permalink)  
Antiguo 16/03/2011, 09:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problemas para hacer modificaciones

Como te comento, verifica que al imprimir tu formulario este tenga el método post, esto lo puedes hacer dando botón derecho sobre la pagina web y seleccionando ver código fuente, y buscando el <form> de tu formulario e ubicando el method="".

Saludos.
  #30 (permalink)  
Antiguo 16/03/2011, 09:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 57
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas para hacer modificaciones

bien. mira esto me devolvio:

Código HTML:
<form enctype="application/x-www-form-urlencoded" method="post" action=""><dl class="zend_form">

<dt id="nombre-label"><label for="nombre" class="required">Your is name:</label></dt>

<dd id="nombre-element">

<input type="text" name="nombre" id="nombre" value="dd" /></dd>

<dt id="apellido-label"><label for="apellido" class="required">Your is last:</label></dt>

<dd id="apellido-element">

<input type="text" name="apellido" id="apellido" value="dd" /></dd>

<dt id="domicilio-label"><label for="domicilio" class="required">Your is address:</label></dt>

<dd id="domicilio-element">

<input type="text" name="domicilio" id="domicilio" value="" /></dd>

<dt id="submit-label"> </dt><dd id="submit-element">

<input type="submit" name="submit" id="submit" value="as" /></dd></dl></form><br>edit<br> </div>

       </body>

   </html> 
y sale el method post

Etiquetas: frameworks-y-php-orientado-a-objetos, modificaciones
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 15:16.