Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con busqueda

Estas en el tema de Problema con busqueda en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Holal!! He estado buscando en la base de datos con el metodo find y ya se trae los valores pero no me los monta en ...
  #1 (permalink)  
Antiguo 19/10/2009, 09:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema con busqueda

Holal!!

He estado buscando en la base de datos con el metodo find y ya se trae los valores pero no me los monta en el formulario me da error con un arreglo, les muestro:

public function buscarAction()
{

$request = $this->getRequest();
$form = new Default_Form_Ejemplo();

if ($this->getRequest()->isPost()) {
if ($form->isValid($request->getPost())) {
$idejemplo = $form->getValue('idejemplo');
$busqueda = new Default_Model_Ejemplo2();
$busidejemplo = $busqueda->find($idejemplo);
// $form->populate($busidejemplo);
$form->setDefaults($busidejemplo);
$this->view->form = $form;
}
}
$form->setAction('./ejemplo2/enviar');
$this->view->form = $form;
}

con ninguno de los dos me funciona ni populate ni setDefauls les muestro los errores para cada uno asumiendo que al final me dice lo mismo con ambos:

Catchable fatal error: Argument 1 passed to Zend_Form::setDefaults() must be an array, object given, called in /var/www/SIS/application/controllers/EjemploController.php on line 81 and defined in /var/www/SIS/library/Zend/Form.php on line 1227

Catchable fatal error: Argument 1 passed to Zend_Form:opulate() must be an array, object given, called in /var/www/SIS/application/controllers/EjemploController.php on line 80 and defined in /var/www/SIS/library/Zend/Form.php on line 1893

porque sera?? Gracias de antemano
  #2 (permalink)  
Antiguo 19/10/2009, 10:09
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Problema con busqueda

find devuelve un objeto y no un array, cambia

Código PHP:
$busqueda->find($idejemplo
por

Código PHP:
$busqueda->find($idejemplo)->toArray() 
saludos
  #3 (permalink)  
Antiguo 19/10/2009, 12:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con busqueda

Gracias por ayudar pero no me sirve me da este error:

Fatal error: Call to undefined method Default_Model_Ejemplo2::toArray() in /var/www/SIS/application/controllers/EjemploController.php on line 79

Sera por un problema de version estou usando la 1.9.3
  #4 (permalink)  
Antiguo 19/10/2009, 13:46
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Problema con busqueda

de que clase es Default_Model_Ejemplo2? y que devuelve el find()?
  #5 (permalink)  
Antiguo 19/10/2009, 14:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con busqueda

Uso 3 modelos porque me guie de la pagina oficial de ZF

uno es: (En este estan todos los get y set)
<?php
class Default_Model_Ejemplo2
{
public function find($id_eje)
{
$this->getMapper()->find($id_eje, $this);
return $this;
}

el otro es: (En este estan los insertar, buscar, setDbTable, etc)
<?php
class Default_Model_Ejemplo2Mapper
{

public function find($id_eje, Default_Model_Ejemplo2 $ejemplo2)
{
$result = $this->getDbTable()->find($id_eje);
if (0 == count($result)) {
return;
}
$row = $result->current();
$ejemplo2->setId_eje($row->id_eje)
->setEmail($row->email)
->setUsuario($row->usuario)
->setCedula($row->cedula)
->setRif($row->rif)
->setDireccion($row->direccion)
->setSelejemplo($row->id_estado)
->setFecha($row->fecha);
}

y el otro modelo:
<?php

class Default_Model_DbTable_Ejemplo2 extends Zend_Db_Table_Abstract
{
/** Table name */
protected $_name = 'ejemplo2';

Por eso es que hago Default_Model_Ejemplo2 para el find, te sirve asi o pongo el codigo completo
  #6 (permalink)  
Antiguo 19/10/2009, 14:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con busqueda

El problema es ese precisamente:
Código PHP:
Ver original
  1. public function find($id_eje)
  2. {
  3.      $this->getMapper()->find($id_eje, $this);
  4.      return $this;
  5. }

Regresas el mismo objeto, en ese caso deberías de regresar lo que te regresa el método find y no el mismo objeto.

Saludos.
  #7 (permalink)  
Antiguo 20/10/2009, 08:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con busqueda

Gracias! Era lo que decias!!!
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 02:50.