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

MVC options en controlador o vista

Estas en el tema de MVC options en controlador o vista en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy usando una arquitectura propia basada en el modelo MVC, y me preguntaba que seria lo ideal Guardar en el controlador una variable que contenga ...
  #1 (permalink)  
Antiguo 25/07/2013, 08:29
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
MVC options en controlador o vista

Estoy usando una arquitectura propia basada en el modelo MVC, y me preguntaba que seria lo ideal

Guardar en el controlador una variable que contenga los options de un select,

Código PHP:
Ver original
  1. $vehiculoOption = '<option value="">Seleccione VehÃ*culo</option>';
  2. /* @var $tipoVehiculo TipoVehiculo */
  3. foreach ($tiposVehiculo as $tipoVehiculo) {
  4.     $vehiculoOption .= '<option value="'.$tipoVehiculo->getIdTipoVehiculo().'">';
  5.     $vehiculoOption .= $tipoVehiculo->getDTipoVehiculo().'</option>';
  6. }

O recorrerlo en la vista.

Código PHP:
Ver original
  1. <option value="">Seleccione Veh&iacute;culo</option>
  2.      <?php foreach ($tiposVehiculo as $tipoVehiculo) { ?>
  3.          <option value="<?php echo $tipoVehiculo->getIdTipoVehiculo() ?>">
  4.              <?php echo $tipoVehiculo->getDTipoVehiculo(); ?>
  5.          </option>
  6. <?php } ?>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #2 (permalink)  
Antiguo 25/07/2013, 08:52
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: MVC options en controlador o vista

Pues segun lo que yo conozco y uso en la vista solo van los datos tratados por el controlador es decir la salida y nada mas.

Y el controlador es el encargado de tratar el comportamiento de las acciones entre vista y modelo(Pues yo creo que por eso se llama controlador).

Yo recomendaria segun lo anterior que lo apliques en el controlador.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #3 (permalink)  
Antiguo 25/07/2013, 09:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: MVC options en controlador o vista

Cita:
Iniciado por CesarHC Ver Mensaje
Pues segun lo que yo conozco y uso en la vista solo van los datos tratados por el controlador es decir la salida y nada mas.

Y el controlador es el encargado de tratar el comportamiento de las acciones entre vista y modelo(Pues yo creo que por eso se llama controlador).

Yo recomendaria segun lo anterior que lo apliques en el controlador.
Las vistas pueden tener bucles o if para mostrar contenido, sin logica de negocio, de ahi surge mi duda, y no se que tan bien esta el hecho de concatenar html en una variable, nunca me pareció buena practica. Pero queria escuchar sus opiniones
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 25/07/2013, 09:31
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: MVC options en controlador o vista

De las dos opciones que muestras me quedaría con la segunda, de todas formas en tu lugar utilizaría alguna suerte de view helper(o mejor aún, twig con un macro )

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 25/07/2013, 11:44
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: MVC options en controlador o vista

en el controlador no deberias tener nada de html, la 2da opcion es la correcta :)
__________________
>> abimaelmartell.com
  #6 (permalink)  
Antiguo 25/07/2013, 12:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: MVC options en controlador o vista

Cita:
Iniciado por abimex Ver Mensaje
en el controlador no deberias tener nada de html, la 2da opcion es la correcta :)
Yo también voy mas por esta opción, algún argumento de las ventajas que me otorga?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 25/07/2013, 13:14
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: MVC options en controlador o vista

La ventaja seria que sigues las buenas practicas, ahora si quieres una ventaja "real" deberías tener un view helper/partial/macro o como lo quieras nombrar que te permita reutilizar.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 28/07/2013, 11:45
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: MVC options en controlador o vista

Usando el MVC "típico", efectivamente, tendrás que usar un "snippet", "helper", "partial","twig",etc,etc.Personalmente, yo en esas cosas leo "hack","pseudohack","otro hack",etc,etc.

Una forma ligeramente mejor de hacerlo, es una mezcla de las dos opciones que propones.En el controlador, inicializar una fuente de datos, y pasar a la vista esa fuente de datos.La fuente de datos NO es un modelo.Una fuente de datos puede ser una query, o array, un fichero ini, o cualquier otra cosa.(Hay Datasources simples o compuestos, los simples pueden ser de acceso aleatorio o no,etc...Hay muchas formas de hacer esto).

Una forma que yo considero "elegante" de hacerlo, es pasarle a una factoría, el modelo, y el nombre de la columna del modelo que quieres editar.Con esa información, acceder a la metadata de la columna.Comprobar que es una relación con la tabla "TipoVehiculo", y que la forma por defecto de editar ese tipo de columna, es con un "select".Así que genera el select, a menos que la metadata de la columna especifique otra cosa.
Es decir, que la definición del campo "TipoVehiculo" en el modelo , es:
Código HTML:
Ver original
  1. $this->definition=array(
  2.      ....
  3.      "FIELDS"=>array(...
  4.                "TipoVehiculo"=>array("Type"=>"Relationship",
  5.                                                   "Table"=>"TiposVehiculo",
  6.                                                   "RemoteField"=>"id_tipovehiculo",
  7.                                                   "Multiplicity"=>"1:N",
  8.                                                    "Required"=>true,
  9.                                                    "Default"=>"NULL",
  10.                                                    "Output"=>array(
  11.                                                           "HTML"=>array(
  12.                                                                      "EditAs"=>"Select"                                                                      
  13.                                                                      )
  14.                                                     )
  15.                                        )
  16.      .....
Si en este array cambias "Select" por "Radio", todos los formularios que editen este modelo
deberían cambiar su tipo de input.
Esta solución es DRY.Supón que, en vez de una relación, el tipo de dato es una cadena de caracteres.En la metadata del campo, puedes especificar la longitud máxima del campo.Leyendo esta metadata, puedes generar un input de tipo TEXT con ese número de caracteres.Cualquier framework que se autoproclame "DRY", pero que no sea capaz de llevar las restricciones de los tipos de datos de las columnas del modelo, desde la base de datos, hasta el javascript del navegador, no es DRY.
Pero bueno, ya me he ido mucho por las ramas

Etiquetas: controlador, mvc, php, select, variable
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 06:41.