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

Duda con funcionalidad

Estas en el tema de Duda con funcionalidad en el foro de Zend en Foros del Web. Hola a todos Tengo un par de dudas, una es que tengo formulario que requieren el ingreso de datos tipo fecha, mi pregunta es donde ...
  #1 (permalink)  
Antiguo 23/01/2011, 13:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Duda con funcionalidad

Hola a todos

Tengo un par de dudas, una es que tengo formulario que requieren el ingreso de datos tipo fecha, mi pregunta es donde controlador o modelo puedo implementar una función que convierta la fecha de este formato (00/00/0000) a fecha MYSQL (0000/00/00) para almacenar ese dato en la bd, y después hacer el proceso inverso pero esta vez para mostrarlo en el view.

La estructura es la siguiente, tengo un controlador, un modelo, un modeloMapper, y el zend_db_table.

Otra duda es que quiero saber si este procedimiento esta bien para iniciar la session.

archivo: bootstrap.php
Código PHP:
Ver original
  1. /**
  2.      * Bootstrap the Zend_Session Component
  3.      *
  4.      * @return Zend_Session
  5.      */
  6.     protected function _initSession()
  7.     {
  8.         $session = new Zend_Session_Namespace('clinica');
  9.         Zend_Registry::set('Session', $session);
  10.     }

Entonces después recupero en los controladores donde lo necesite la session desde el registro. Por lo que lei es el mismo Zend_Session_Namespace quien se encarga de iniciar la sesion una vez instanciada (Zend_Session::start()).

Saludos
  #2 (permalink)  
Antiguo 23/01/2011, 14:03
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: Duda con funcionalidad

Cita:
Tengo un par de dudas, una es que tengo formulario que requieren el ingreso de datos tipo fecha, mi pregunta es donde controlador o modelo puedo implementar una función que convierta la fecha de este formato (00/00/0000) a fecha MYSQL (0000/00/00) para almacenar ese dato en la bd, y después hacer el proceso inverso pero esta vez para mostrarlo en el view.
Si estas implementando DataMapper deberia ir en el mapper.

Cita:
Otra duda es que quiero saber si este procedimiento esta bien para iniciar la session.
Es correcto para el namespace, ahora si la intención es inicializar la session en general deberias utilizar Zend_Session::start, aunque no tiene mucho sentido guardar en el Registry un Session namespace.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 23/01/2011, 14:43
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Duda con funcionalidad

Gracias por la respuesta, pero quisiera saber si me puedes orientar mas con respecto a las sesiones y como las maneja ZEND, tu planteas usar Zend_Session::start en el método del bootstrap, he leido que se pueden crear múltiples namespace y que las propiedades se acceden haciendo referencia al nombre de la variable , estas mismas pueden ser modificadas en su valor o eliminadas, ahora también leí que al momento de instanciar Zend_Session_Namespace este inicializa la sesión mediante el llamado la método estático start(), según lo que me planteas es no guardar en el registro el objeto Zend_Session_Namespace sino que solo crear su instancia y luego usarlo en el/los controladores mediante Zend_Session_Namespace->variable;

He entendido bien o no.

Saludos
  #4 (permalink)  
Antiguo 23/01/2011, 14:59
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: Duda con funcionalidad

Has entendido bien Fenris, cuando necesites el namespace simplemente instancialo, en cuanto a lo de usar Zend_Session::start en el bootstrap, no es algo mio, es una recomendación de Zend para cuando manipules sesiones.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 09/02/2011, 19:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Duda con funcionalidad

Gracias masterpuppet

Ahora otra duda, cuando hago zend_session::start(), este crea un namespace por defecto "Default", como hago para cambiar eso y que tenga un namespace que yo pueda setear o configurar y que por supuesto este namespace sea global, y este seteo se debería hacer debajo de la linea donde inicializa la sesion(Zend_Session::start());

Saludos
  #6 (permalink)  
Antiguo 10/02/2011, 12:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Duda con funcionalidad

hOLA

Tengo una pregunta como puedo cambioar el namespace por defecto en Zend_Session, ya que en el bootstrap inicializo la sesion con
Código PHP:
Ver original
  1. Zend_Session::start()
, habra algo como
Código PHP:
Ver original
  1. Zend_Session::registerNameSpace('mi_namespace');

para despues usarlo,
Código PHP:
Ver original
  1. $ns= new Zend_Session_Namespace('mi_namespace');
  2. $ns->varName;

Esto porque sino me crea muchos archivos de session, y en realidad quisiera tener solo uno y en ese ir almacenando todo lo que necesite la aplicacion.-

Saludos
  #7 (permalink)  
Antiguo 10/02/2011, 13:25
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: Duda con funcionalidad

Que tal Fenris, creo que te estas confundiendo un poco, Zend_Session no crea un namespace Default, Default es el nombre del namespace si no le pasas otro al momento de instanciarlo:

Código PHP:
Ver original
  1. $ns = new Zend_Session_Namespace();

para cambiar el nombre del namespace('Default') lo único que tenes que hacer es:

Código PHP:
Ver original
  1. $ns = new Zend_Session_Namespace('MyNamespace');

y crear diferentes namespace's no te crea varios archivos, te crea uno solo, no olvides que Zend_Session_Namespace no es mas que un wrapper de $_SESSION y crear varios namespaces lo que hace es algo como esto:

Código PHP:
Ver original
  1. $_SESSION['__ZF']['Default'];
  2. $_SESSION['__ZF']['MyNamespace'];

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 10/02/2011, 15:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Duda con funcionalidad

Hola masterpuppet

Ok, pero para que quede global este namespace lo tendria que declarar en el bootstrap..-
  #9 (permalink)  
Antiguo 10/02/2011, 16:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Duda con funcionalidad

¿A que te refieres con Global? Cada que uses:
Código PHP:
Ver original
  1. $ns = new Zend_Session_Namespace('MyNamespace');

Dentro de cualquier controlador va a tener los mismos datos ya que va a usar los de la sesión...
  #10 (permalink)  
Antiguo 10/02/2011, 18:07
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: Duda con funcionalidad

Fenris si queres tener un único objeto de un namespace X para toda la aplicación, podrias hacer algo asi:

Código PHP:
Ver original
  1. //Bootstrap.php
  2. protected function _initSession()
  3. {
  4.     return new Zend_Session_Namespace('MyNamespace', true);
  5. }

el segundo parámetro lo hace único y luego para obtenerlo desde un controller:

Código PHP:
Ver original
  1. class IndexController extends Zend_Controller_Action
  2. {
  3.     public function indexAction()
  4.     {        
  5.         $ns = $this->getInvokeArg('bootstrap')->session;  
  6.         ...
  7.     }
  8. }

al ser único si intentas instanciar de nuevo el namespace(MyNamespace) te va lanzar una Exception.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 10/02/2011, 18:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Duda con funcionalidad

Cita:
Iniciado por masterpuppet Ver Mensaje
Fenris si queres tener un único objeto de un namespace X para toda la aplicación, podrias hacer algo asi:

Código PHP:
Ver original
  1. //Bootstrap.php
  2. protected function _initSession()
  3. {
  4.     return new Zend_Session_Namespace('MyNamespace', true);
  5. }

el segundo parámetro lo hace único y luego para obtenerlo desde un controller:

Código PHP:
Ver original
  1. class IndexController extends Zend_Controller_Action
  2. {
  3.     public function indexAction()
  4.     {        
  5.         $ns = $this->getInvokeArg('bootstrap')->session;  
  6.         ...
  7.     }
  8. }

al ser único si intentas instanciar de nuevo el namespace(MyNamespace) te va lanzar una Exception.

Saludos.
Ok, pero tengo otra duda y disculpen que sea tan insistente con esto pero quiero tenerlo claro, en el codigo que cito es necesario, recomendable, buena practica cualquier adjetivo que se quiera, colocar tambien una linea mas arriba dentro del mismo metodo la instruccion Zend_Session::start(), quedando asi el codigo.

Código PHP:
Ver original
  1. protected function _initSession()
  2.     {
  3.         Zend_Session::start();
  4.         return new Zend_Session_Namespace('MyNamespace', true);
  5.     }

Saludos y gracias por la respuestas.
  #12 (permalink)  
Antiguo 10/02/2011, 19:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Duda con funcionalidad

Siempre es bueno llamar a Zend_Session::start() para evitar errores de cabeceras.

Saludos.

Etiquetas: funcionalidad
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 04:02.