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

Sesiones y lógica en la vista

Estas en el tema de Sesiones y lógica en la vista en el foro de CodeIgniter en Foros del Web. Hola buenas, Estoy usando un template en CI, y mi duda es la siguiente. Tengo una cabecera que muestra un box de login, con user ...
  #1 (permalink)  
Antiguo 29/06/2011, 06:35
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Sesiones y lógica en la vista

Hola buenas,

Estoy usando un template en CI, y mi duda es la siguiente. Tengo una cabecera que muestra un box de login, con user y password. Si el usuario esta logeado, quiero que no se muestre.

Es correcto que en cada controlador que usa ese header, envie un bool a la vista del tipo: show_login_box, y que en la vista ponga un condicional?

Un saludo!
  #2 (permalink)  
Antiguo 29/06/2011, 07:05
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Sesiones y lógica en la vista

No es mas fácil ponerle un condicional a la vista directamente con la session del usuario donde esta el formulario? O como llamas al formlario esta en una otra vista?

if(nosecomoguardaslasessiondelusuario){
oculta form
} else {
muestra form
}
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 29/06/2011, 10:50
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Hola buenas,

Si, evidentemente es más fácil, pero no se si es correcto el hecho de usar lógica en la vista. Prefiero usar un boolean que viene desde el controlador porque puede ser que el dia de mañana cambie el gestor de sesiones, y por lo tanto no me sirve ese código, además, me resulta más atractivo usarlo de la otra manera.

La duda esta en usar lógica en la vista.

Un saludo!
  #4 (permalink)  
Antiguo 29/06/2011, 16:13
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Sesiones y lógica en la vista

Y si te gusta hacerlo como quieres hacerlo, para que pides opiniones.
Hay dos opciones, atacar a la vista desde el controller o hacerklo como digo yo.
__________________
Drupal Argentina
  #5 (permalink)  
Antiguo 30/06/2011, 00:58
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Jajaja eso de que hay sólo dos opciones, sera dentro de tu cabeza. Y pido opiniones para que me contesten a si se puede usar lógica en la vista, no para usar un condicional de sesión en la vista.

De todas formas gracias por tu esfuerzo.

Un saludo!
  #6 (permalink)  
Antiguo 30/06/2011, 07:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Sesiones y lógica en la vista

Cita:
Iniciado por miktrv Ver Mensaje
Jajaja eso de que hay sólo dos opciones, sera dentro de tu cabeza. Y pido opiniones para que me contesten a si se puede usar lógica en la vista, no para usar un condicional de sesión en la vista.

De todas formas gracias por tu esfuerzo.

Un saludo!
De poder, puedes hasta meter la lógica del negocio en la vista. Ahora bien, es lo correcto?
La vista tiene 1 solo propósito y es bien claro, mostrar datos. Se pueden poner una que otras condiciones, pero siempre y cuando estos no estén estrechamente unidos (tightly coupled) al controlador ni mucho menos al modelo.
  #7 (permalink)  
Antiguo 30/06/2011, 08:04
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

De acuerdo, esa respuesta me vale. No se donde esta la barrera de lo que se permite y lo que no dentro de una vista.. no se si un simple condicional es aceptable o no..


Un saludo!
  #8 (permalink)  
Antiguo 30/06/2011, 09:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Sesiones y lógica en la vista

Cita:
Iniciado por miktrv Ver Mensaje
De acuerdo, esa respuesta me vale. No se donde esta la barrera de lo que se permite y lo que no dentro de una vista.. no se si un simple condicional es aceptable o no..


Un saludo!
Mi opinión en cuanto a eso es: Siempre y cuando esa condicional no depende completamente del controlador o el modelo, esta bien.
Eso quiere decir que si haces un cambio a tu controlador o a tu modelo, tu vista no dejara de funcionar
  #9 (permalink)  
Antiguo 30/06/2011, 10:04
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Entonces tu como solucionarias el tema de mostrar un box o no, dependiendo de si el usuario esta logeado?

Un saludo!
  #10 (permalink)  
Antiguo 30/06/2011, 20:31
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Sesiones y lógica en la vista

Hola, no soy ni siquiera un conocedor del MVC , recien me estoy iniciando en el tema pero pienso que tratando de lograr la correcta independencia entre el controlador y la vista, voto por enviar el boolean desde el controlador, pudiendo cambiar el mismo cuando sea necesario siempre y cuando mantenga la interfaz entre el controlador y la vista (o sea mantenga las variables necesarias para que la vista funciones)
Saludos.
P.D. No se calienten los ánimos, estamos para ayudarnos.
  #11 (permalink)  
Antiguo 01/07/2011, 00:47
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Jajaja opino lo mismo con lo de los ánimos. De acuerdo, entonces de momento la mejor opción es lo del boolean... ok pues muchas gracias por tu ayuda!! un saludo!
  #12 (permalink)  
Antiguo 01/07/2011, 18:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Sesiones y lógica en la vista

Porque crear una variable en "cada controlador que lo necesite"?, teniendo un controlador de sesiones y, seguramente un nucleo del sistema lo unico que necesitarias en la vista es:

Código PHP:
Ver original
  1. if( ! $nucleoDelSistema->sessionController->isLogged()) {
  2.     // Mostrar el formulario
  3. }
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 01/07/2011, 20:58
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Sesiones y lógica en la vista

Cita:
Iniciado por Triby Ver Mensaje
Porque crear una variable en "cada controlador que lo necesite"?, teniendo un controlador de sesiones y, seguramente un nucleo del sistema lo unico que necesitarias en la vista es:

Código PHP:
Ver original
  1. if( ! $nucleoDelSistema->sessionController->isLogged()) {
  2.     // Mostrar el formulario
  3. }
Totalmente de acuerdo, no me imagino un ACL con 3 / 4 / 5 / n formularios, bloques, etc, esperando por que un controller le mande el ok.

Saludos
__________________
Drupal Argentina
  #14 (permalink)  
Antiguo 01/07/2011, 21:26
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Sesiones y lógica en la vista

Pudieran aclararme a que se refieren con núcleo del sistema. Es alguna forma de organizar el proyecto?
  #15 (permalink)  
Antiguo 02/07/2011, 01:52
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

No opino lo mismo.

Quizás el control de sesiones cambia un dia, o simplemente algún bloque cambiar el comportamiento por el cual se debe de mostrar o no.

Con un bool, siempre mantenemos la parte de la vista más limpia y no nos tenemos que preocupar de la lógica, considero que mientras más apartada este la lógica de la vista mucho mejor.

De todas formas para gustos los colores, un saludo y gracias por todo!
  #16 (permalink)  
Antiguo 02/07/2011, 16:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Sesiones y lógica en la vista

osmymm, es solo el controlador principal, sorry por el termino poco usual.

miktrv, disculpa mi ignorancia e insistencia, si lo haces con una variable boleana, me parece que de cualquier forma tendrias que preguntar al controlador de sesiones si esa variable debe ser verdadero o falso y, en la vista, incluir un if para evaluar el resultado.

Si mi apreciacion es cierta, entonces estarias haciendo practicamente lo mismo que lo sugerido, pero con mas codigo en los controladores y de todos modos un poco de logica en la vista, solo que con una variable en lugar de propiedad o metodo.

Igualmente, al hacer un cambio grande en el controlador de sesiones, necesariamente tendrias que modificar todos los controladores donde asignas esa variable boleana?

Si sigo equivocado, por favor podrias poner un ejemplo de lo que mencionas?, aunque sea solo en pseudo-codigo para tratar de entender tu punto de vista.

Yo creo que si el sistema esta bien planeado, podrias cambiar cualquier controlador sin tener que modificar una sola linea de otros controladores o vistas, porque metodos y propiedades deberian mantenerse, cambiando, en este caso, solo la persistencia: Base de datos, cookies o lo que se te ocurra.

Un ejemplo de lo anterior es trabajar con bases de datos; hace tiempo estaba "casado" con MySQL, bueno, a la fecha sigo haciendo todo con MySQL, solo que en el proyecto que estoy trabajando ahora:

Creo controlador para DB, aqui evaluo el motor de base de datos a usar, incluyo e instancio el controlador adecuado, que extiende de PDO; ya no tengo SQL directamente en los modelos, solo envio parametros desde el modelo al controlador para que arme, ejecute las consultas y devuelva el resultado.

Entonces, si el dia de mañana se me ocurre cambiar a PosgreSQL, solo tendria que crear el controlador para este motor en especifico y no voy a tocar una sola linea en los modelos... aunque si debo cambiar a algo diferente de SQL, entonces si que sufrire para lograr esto mismo!
__________________
- León, Guanajuato
- GV-Foto
  #17 (permalink)  
Antiguo 02/07/2011, 17:09
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Sesiones y lógica en la vista

Cita:
Creo controlador para DB, aqui evaluo el motor de base de datos a usar, incluyo e instancio el controlador adecuado, que extiende de PDO; ya no tengo SQL directamente en los modelos, solo envio parametros desde el modelo al controlador para que arme, ejecute las consultas y devuelva el resultado.
A ver si puedo entender, cuando te refieres al controlador que arma, ejecuta y devuelve el resultado, Es una clase que extiende de Controller?
  #18 (permalink)  
Antiguo 02/07/2011, 19:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Sesiones y lógica en la vista

osmymm, no, es un controlador independiente y no requiere extender del principal.
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 03/07/2011, 04:49
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Cita:
Iniciado por Triby Ver Mensaje
osmymm, es solo el controlador principal, sorry por el termino poco usual.

miktrv, disculpa mi ignorancia e insistencia, si lo haces con una variable boleana, me parece que de cualquier forma tendrias que preguntar al controlador de sesiones si esa variable debe ser verdadero o falso y, en la vista, incluir un if para evaluar el resultado.

Si mi apreciacion es cierta, entonces estarias haciendo practicamente lo mismo que lo sugerido, pero con mas codigo en los controladores y de todos modos un poco de logica en la vista, solo que con una variable en lugar de propiedad o metodo.

Igualmente, al hacer un cambio grande en el controlador de sesiones, necesariamente tendrias que modificar todos los controladores donde asignas esa variable boleana?

Si sigo equivocado, por favor podrias poner un ejemplo de lo que mencionas?, aunque sea solo en pseudo-codigo para tratar de entender tu punto de vista.

Yo creo que si el sistema esta bien planeado, podrias cambiar cualquier controlador sin tener que modificar una sola linea de otros controladores o vistas, porque metodos y propiedades deberian mantenerse, cambiando, en este caso, solo la persistencia: Base de datos, cookies o lo que se te ocurra.

Un ejemplo de lo anterior es trabajar con bases de datos; hace tiempo estaba "casado" con MySQL, bueno, a la fecha sigo haciendo todo con MySQL, solo que en el proyecto que estoy trabajando ahora:

Creo controlador para DB, aqui evaluo el motor de base de datos a usar, incluyo e instancio el controlador adecuado, que extiende de PDO; ya no tengo SQL directamente en los modelos, solo envio parametros desde el modelo al controlador para que arme, ejecute las consultas y devuelva el resultado.

Entonces, si el dia de mañana se me ocurre cambiar a PosgreSQL, solo tendria que crear el controlador para este motor en especifico y no voy a tocar una sola linea en los modelos... aunque si debo cambiar a algo diferente de SQL, entonces si que sufrire para lograr esto mismo!
Hola buenas de nuevo,

Seguimos con el tema boolean, yo uso un modelo que es quien se encarga de saber si un usuario esta logeado o no, dentro de este modelo, uso la library de CI para saber si la sesión existe, por lo que a tu pregunta "al hacer un cambio grande en el controlador de sesiones, necesariamente tendrias que modificar todos los controladores donde asignas esa variable boleana" sería, NO, ya que en todo caso tendría que cambiar el método de mi modelo que se encarga de eso.

Otro punto que no me gusta de usar directamente CI, es que no es un helper, y esta muy anidado a CI, llámame perfeccionista pero prefiero tener separada lo máximo mi aplicación del FrameWork, es decir, te diría que mientras más separado mejor, si el dia de mañana decides cambiar de FRAMEWORK, lo tendría mucho más fácil.

No digo que lo mío sea lo mejor, pero creo que de esta manera me curo en salud para futuros cambios,

Un saludo!
  #20 (permalink)  
Antiguo 03/07/2011, 08:35
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Sesiones y lógica en la vista

Todos tenemos nuestra forma de organizar nuetros proyectos, el kit de la colaboración está en ir incorporando elementos de mejoras en nuestras arquitecturas y formas de trabajo. Por el momento comparto con miktrv la forma de trabajo, aunque no descarto la posibilidad de como ya dije incorporar cambios en la medida que aumente mi experiencia con CI. Triby disculpame por la falta de familiarización con los términos pero reciencomienzo con CI. Con respercto a lo que planteabas de tu manipulación de la base de datos me ha surgido una duda.
El Active Record de la clase DataBase de CI no garantiza la estabilidad de la aplicación ante el cambio de gastor de base de datos? (por supuesto me refiero a los gestores que tiene contemplado)
  #21 (permalink)  
Antiguo 03/07/2011, 08:42
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Hola buenas,

Si que te permite cambiar de gestor de base de datos, mirate la doc de CI:

http://codeigniter.com/user_guide/da...iguration.html

Como verás, puedes especificar el driver:

"dbdriver - The database type. ie: mysql, postgres, odbc, etc. Must be specified in lower case."

Un saludo!
  #22 (permalink)  
Antiguo 03/07/2011, 08:54
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Sesiones y lógica en la vista

La información de la doc la tengo bastante clara, solo preguntaba para saber si le habian encontrado fallos al Active Record?
  #23 (permalink)  
Antiguo 03/07/2011, 09:45
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Sesiones y lógica en la vista

Cita:
Iniciado por osmaymm Ver Mensaje
La información de la doc la tengo bastante clara, solo preguntaba para saber si le habian encontrado fallos al Active Record?
Si buscas un poco verás que si, pero no se si son críticos.

http://codeigniter.com/forums/viewthread/62501/

Un saludo!

Etiquetas: frameworks-y-php-orientado-a-objetos
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:22.