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

Message: Cannot save a Row unless it is connected

Estas en el tema de Message: Cannot save a Row unless it is connected en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola todos, Estoy desarrollando un app donde luego de que un "usuario final" inicia sesion en el sitio, este debe redireccionarlo a un formulario que ...
  #1 (permalink)  
Antiguo 14/03/2010, 13:27
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Message: Cannot save a Row unless it is connected

Hola todos,

Estoy desarrollando un app donde luego de que un "usuario final" inicia sesion en el sitio, este debe redireccionarlo a un formulario que es dinamico, todos los campos estan en la base de datos, para hacer esto hice un Helper que toma el usuario final y genera e codigo HTML del formulario. En la vista tengo lo siguente

Código PHP:
Ver original
  1. $auth = Zend_Auth::getInstance();
  2.  
  3. $final_user = $auth->getIdentity();
  4.  
  5. echo $this->finalUserForm($final_user);

y en el helper:
Código PHP:
Ver original
  1. public function finalUserForm($final_user, $num_cols = 2)
  2. {
  3.     $this->person = $final_user->findDependentRowset('Models_Model_Person')->current();
  4. .
  5. .
  6. .

Pero esto me da el error:
Message: Cannot save a Row unless it is connected
Stack trace:

#0 C:\xampp\htdocs\mercedes\library\Zend\Db\Table\Row \Abstract.php(863): Zend_Db_Table_Row_Abstract->_getTable()
#1 C:\xampp\htdocs\mercedes\application\public\views\ helpers\FinalUserForm.php(10): Zend_Db_Table_Row_Abstract->findDependentRowset('Models_Model_Pe...')
#2 [internal function]: Zend_View_Helper_FinalUserForm->finalUserForm(Object(Zend_Db_Table_Row))
.
.
.

Siendo la linea 10 de FinalUserForm.php
Código PHP:
Ver original
  1. $this->person = $final_user->findDependentRowset('Models_Model_Person')->current();

Me he dado cuenta que aparece cuando inento llamar algun metodo de $final_user, pero si me refiero a atributos en la base de datos funciona bien como por ejemplo $final_user->names.

En el AuthAdapter estoy almacenando el objeto en las variables de sesion algo asi:

Código PHP:
Ver original
  1. $final_user = $person->findDependentRowset('Models_Model_FinalUser')->current();
  2. .
  3. .
  4. .
  5. $result = new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,$final_user);

Si alguien me puede ayudar con esto le estaria muy agradecido
  #2 (permalink)  
Antiguo 14/03/2010, 23:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Message: Cannot save a Row unless it is connected

Lo que pasa es que Zend automaticamente al serializar algún row, en un medio como una sesión, lo que hace es solo descargar los datos, pero "desconecta" ese row de el objeto padre, lo que tu tienes que hacer es algo así por ejemplo:
Código PHP:
Ver original
  1. $finalUser->setTable(new Model_Usuarios_Table());

O sea al volver a "revivir" el row tienes que indicarle cual es la tabla padre, esto es por diseño y la verdad una muy buena idea, porque si guardas todo el objeto como tal, se guarda el objeto config con el acceso a la base de datos y esto representa un riesgo de seguridad.

Saludos.
  #3 (permalink)  
Antiguo 15/03/2010, 09:54
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Message: Cannot save a Row unless it is connected

PERFECTO !!!

Gracias GatorV.

Etiquetas: row
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 23:38.