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

MVC - dos acciones misma URL ?

Estas en el tema de MVC - dos acciones misma URL ? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. BUENASSSSs.. Estube mirando MVC y segun he visto muchas veces, asocian 1 controlador con 1 vista y se carga 1 controlador y se ejecuta 1 ...
  #1 (permalink)  
Antiguo 13/12/2010, 20:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Busqueda MVC - dos acciones misma URL ?

BUENASSSSs..

Estube mirando MVC y segun he visto muchas veces, asocian 1 controlador con 1 vista y se carga 1 controlador y se ejecuta 1 accion en particular con una URL:

Cita:
/?controlador=Items&accion=listar

Mi pregunta es: si necesito... hacer varias cosas por ejemplo en una HOME donde no es una accion especifica sino que hay varios widgets..... como seria ? como se especifican en este caso varias acciones ? deben ser del MSIMO controlador ?

Otra duda: es 1 controlador por vista ? o 1 viata por controlador ? o es una relacion 1 a 1 ?

GRACIASsss!
__________________
Salu2!
  #2 (permalink)  
Antiguo 13/12/2010, 20:10
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: MVC - dos acciones misma URL ?

pues creo que tendrias que investigar un poquito mas, cada accion del controlador va llamando a una vista imagina crear un controlador para cada vista por ejemplo tienes un index donde muestras todos los usuarios creas su controlador, luego creas un controlador para una pagina de edicion de usuario y otro para registrarlo estaria bien eso?? bueno el blog de este amigo me ayudo a comenzar a comprender el MVC y aca otro mvc2 que tambien me ayudo a comprender mas lo que es el MVC saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 13/12/2010, 20:52
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: MVC - dos acciones misma URL ?

Cita:
Mi pregunta es: si necesito... hacer varias cosas por ejemplo en una HOME donde no es una accion especifica sino que hay varios widgets..... como seria ? como se especifican en este caso varias acciones ? deben ser del MSIMO controlador ?
Dependiendo del framework que uses deberías usar "elementos" que son una versión reducida de las vistas sin necesidad de un controlador; pero si necesitas que muestren data dinámica deberás agenciarte de ajax y hacer llamadas a los controladores que requieras.

Cita:
Otra duda: es 1 controlador por vista ? o 1 viata por controlador ? o es una relacion 1 a 1 ?
Lo normal es una acción = una vista; las acciones se encuentran contenidas en un controlador, por lo tanto la relación sería 1 controlador = n acciones y 1 acción = 1 vista; sin embargo puedes tener acciones sin controladores y una vista puede ser utilizada por más de un controlador.

__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 14/12/2010, 01:24
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
gracias muchachos!

Me sirvieron mucho los enlaces y la explicacion de jcxnet...... muyy buena

Cita:
Iniciado por jcxnet Ver Mensaje
Dependiendo del framework que uses deberías usar "elementos" que son una versión reducida de las vistas sin necesidad de un controlador; pero si necesitas que muestren data dinámica deberás agenciarte de ajax y hacer llamadas a los controladores que requieras.
Alguna idea....de como busco esto para ver ejemplos ?

la idea.....es entender bien......como llevar a cabo varias acciones......en una misma URL

[QUOTE=Italico76;3670634]gracias muchachos!
__________________
Salu2!

Última edición por GatorV; 14/12/2010 a las 11:28
  #5 (permalink)  
Antiguo 15/12/2010, 16:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

BUENASSSSSSS....... en el MVC tengo una Vista y quiero saber si voy bien.....porque le hice una plantilla (tpl/default.php) y ... la carga con el contenido que genero.........PERO.....

.... si requiero incluir archivos...... en una URL en particular... entiendo que es el controlador quien lo decide accediendo a $_GET[] directa o indirectamente.........PERO... como "incluyo" un archivo PHP en una variable de la plantilla ???


Código PHP:
<?
  
  $content 
.= '<table>';
  
// $listado es una variable asignada desde el controlador ItemsController.
  
while($item $listado->fetch()){
    
$content .= "<td>{$item['id_item']}</td>";
    
$content .= "<td>{$item['item']}</td>";
  }
  
$content .= '</table>';  
 
?>
      
<? 
  $tpl
Tpl::singleton();
  
$tpl->set('content'$content);
  
  require 
'tpl\default.php'
?>
Uso ... $tpl->set('content', $content) para setear ese contenido pero.... si necesito un INCLUDE o REQUIERE ...??? como lo mento dentro de $content ???

Se entiende mi problema ? :S

GRACIASSSSSSs
__________________
Salu2!
  #6 (permalink)  
Antiguo 16/12/2010, 07:51
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: MVC - dos acciones misma URL ?

Si estás usando Smarty como motor de templates puede incluir otros templates usando:
Código:
{include file='nombre_template.tpl'}
y si necesita variables se las pasas así:
Código:
{include file='nombre_template.tpl' var1='Variable' array1=$array1}
si estás usando archivos php simples, usando includes debe funcionar...
¿por qué no pruebas con algún framework MVC para PHP?
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #7 (permalink)  
Antiguo 16/12/2010, 09:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

Gracias de Nuevo... jcxnet :P

estoy... usando un framework simple que encontre por la red, y completandolo para entender un poquito el patron :P
__________________
Salu2!
  #8 (permalink)  
Antiguo 16/12/2010, 12:20
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

POR FIN...entendi que es lo que no comprendia!

Si tengo... una URL del tipo /?controlador=Items&accion=listar

1) Cuantas acciones puedo ejecutar por controlador en el la misma vista ? N ? tocaria modificarlo y tener variables accion1=...&accion2=....&accionN= ??

2) Si las acciones que requiero SON DE DIFERENTES CLASES... o sea.. diferentes problemas porque por ejemplo tengo una Vista donde hay un chat y ademas listo los amigos en una red social,..... tiene sentido que sean acciones de diferentes controladores en la misma vista ??? o rompe la regla de 1 controlador - 1 vista ??? o cuantas clases en el controlador puedo cargar por vista ? solo 1 ? N ???

AGRADECIDO DESDE YA!!!!!!!!!!! Pablo
__________________
Salu2!
  #9 (permalink)  
Antiguo 17/12/2010, 07:18
 
Fecha de Ingreso: diciembre-2010
Ubicación: Santiago, Chile
Mensajes: 16
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: MVC - dos acciones misma URL ?

Nota:
Mi respuesta esta vinculada a mis conocimientos en ZF

Cita:
Iniciado por Italico76 Ver Mensaje
1) Cuantas acciones puedo ejecutar por controlador en el la misma vista ? N ? tocaria modificarlo y tener variables accion1=...&accion2=....&accionN= ??
Es solo 1, pero esa vista puede llamar otras de forma dinámica

Cita:
Iniciado por Italico76 Ver Mensaje
2) Si las acciones que requiero SON DE DIFERENTES CLASES... o sea.. diferentes problemas porque por ejemplo tengo una Vista donde hay un chat y ademas listo los amigos en una red social,..... tiene sentido que sean acciones de diferentes controladores en la misma vista ??? o rompe la regla de 1 controlador - 1 vista ??? o cuantas clases en el controlador puedo cargar por vista ? solo 1 ? N ???
Tradicionalmente la jerarquía es:

- Controlador
-- Accion 1
--- Vista HTML
--- Vista JSON
--- Vista EXCEL
--- Vista PDF
--- Vista ETC
-- Accion 1
--- Contexto ...

Las distintos vistas aprovechan los datos obtenidos por el controlador para generar distintos formatos de salida (si es que resulta necesario)
  #10 (permalink)  
Antiguo 17/12/2010, 07:30
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

Si tenes una sección para mostrar lista de noticias vas tener un controlador noticias y una acción lista "controlador=noticas&accion=lista"
La acción lista del controlador noticias pide los datos al modelo que entrega solo datos (ponele un array) y en una vista 'lista.php' vas a mostrar las noticias (generas el html con formato recorriendo ese array)

Ponele que tengas otro controlador que muestre la lista de usuarios "controlador=usuario&accion=lista" pasa lo mismo, la acción lista del controlador usuarios pide los datos al modelo y en tu vista mostrás esos datos (recorriendo el array y dandole el formato que quieras)

Ahora si en el home del sitio querés mostrar la lista de noticias y la lista de usuarios vas a tener por ejemplo un controlador index y una acción index, en tu acción pedis la lista noticias y lista de usuarios a sus modelos, estos como entregan solo datos al controlador en la vista del home vas a mostrar esos datos recorriendo cada array. Y si tenes lista de productos lo mismo, pedis lista de productos al modelo.

O sea no pedir los datos a una una acción porque no es la que se encarga de entregar datos, el que entrega los datos es el modelo.

¿Es correcto o me equivoco? por las dudas me corrigen...


Pero como decis widgets creo que te refería a elementos de páginas como una caja de búsqueda, formulario de login, publicidad, etc, como cada uno de esos elementos lo repetís en varios lugares del sitio y en otros no, te creas un archivo que contenga por ejemplo, solo el formulario y en las vistas lo incluis
  #11 (permalink)  
Antiguo 17/12/2010, 07:36
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

Cita:
Es solo 1, pero esa vista puede llamar otras de forma dinámica
PEROOOOOOO... la vista no incluye controladores sino alrevez.... entonces como otras vistas pueden funcionar si no son cargadas por su controller ?

Las otras preguntas... podrian ser respondidas ? :P

Igualmente........ya estoy agradecido.......con todos Uds
__________________
Salu2!
  #12 (permalink)  
Antiguo 17/12/2010, 07:48
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

ANTE TODO GRACIAS Dany_s

Cita:
Ahora si en el home del sitio querés mostrar la lista de noticias y la lista de usuarios vas a tener por ejemplo un controlador index y una acción index, en tu acción pedis la lista noticias y lista de usuarios a sus modelos, estos como entregan solo datos al controlador en la vista del home vas a mostrar esos datos recorriendo cada array. Y si tenes lista de productos lo mismo, pedis lista de productos al modelo.
Entonces...requiero UNA VISTA para recorrer un array (en seccion noticias), OTRA VISTA (y otro controlador) para recorrer el otro array (usuarios) en la seccion usuarios y una TERCERA VISTA para recorrer los dos en la misma pagina (en la HOME)???


Cita:
Pero como decis widgets creo (..) te creas un archivo que contenga por ejemplo, solo el formulario y en las vistas lo incluis
Tenes razon,...pero trataba de dar un ejemplo de donde surgen mis dudas (malo se ve) :P
__________________
Salu2!
  #13 (permalink)  
Antiguo 17/12/2010, 09:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

Sin conocer el framework que usas, es muy posible, recuerda que el patrón MVC indica que es la vista quien le pide los datos al modelo para saber que renderizar en pantalla, y por ejemplo Zend permite realizar un forward a otro controlador e inyectar código en alguna otra parte del layout, ya que el layout es un registro de porciones de vistas, así que puedes realizar todas esas tareas de forma sencilla.

Saludos.
  #14 (permalink)  
Antiguo 17/12/2010, 09:35
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

Cita:
la vista quien le pide los datos al modelo
¿porqué?
no es que el controlador pide datos al modelo y la vista los presenta?
  #15 (permalink)  
Antiguo 17/12/2010, 09:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

No, lee un poco del modelo MVC, el Controlador maneja el input del usuario y pasa el control a la capa de la vista, la cual le pide los datos al modelo y los renderiza.

Saludos.
  #16 (permalink)  
Antiguo 17/12/2010, 10:40
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

siempre que leo me confunde las terminos jeje

quizá me confundo entre pedir y acceder

o sea la vista pide o solicita al modelo pero al modelo se accede desde el controlador, sería asi?
  #17 (permalink)  
Antiguo 17/12/2010, 14:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

No, mira el ejemplo en la wiki: http://es.wikipedia.org/wiki/Modelo_Vista_Controlador la vista pide los datos directamente al modelo y los renderea para presentarlos al usuario.

Saludos.
  #18 (permalink)  
Antiguo 17/12/2010, 15:08
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

mmmm hay algo que no estoy entendiendo

pongo como ejemplo la guia de symfony http://www.librosweb.es/symfony_1_0/...atron_mvc.html


¿porqué se dice que la vista pide al modelo?

si en el ejemplo el controlador pide los datos al modelo
$articulos = getTodosLosArticulos();

y en la vista solo recorro lo que el controlador me pasa

<?php foreach ($articulos as $articulo): ?>
...
<?php endforeach; ?>

eso me confunde, gracias
  #19 (permalink)  
Antiguo 17/12/2010, 15:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

Desconozco como lo haya implementado Symphony, el único patrón bien implementado que conozco es el de Zend, donde tienes el FrontController (que es la capa del Controller), los Modelos y la capa de la vista que esta formada por un patrón llamado TwoStepView, donde cada Action puede renderizar una o más vistas.

Saludos.
  #20 (permalink)  
Antiguo 17/12/2010, 15:57
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

en el link muestra un ejemplo simple pero no con el framework, estaba por postear el ejemplo de tu blog, web2development.blogspot.com es el tuyo no?

a ver con en Zend por ejemplo tengo un modelo UsuarioModelo, un controlador UsuarioController con una acción listAction y una vista list.phtml

en listAction pido los datos al modelo, el método getAll() me devuelve una colección de Usuarios
$usuarios = new UsuarioModelo();
$this->view->lista = $usuarios->getAll();

y en la vista list.phtml muestro los usuarios
<?php foreach ($this->lista as $usuario): ?>
...
<?php endforeach; ?>


por eso como en el controlador veo que pido los datos al modelo no entiendo porque se dice que la vista pide al modelo, esa es mi confusión
  #21 (permalink)  
Antiguo 17/12/2010, 16:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

No, en Zend, la capa del controlador esta determinada por el FrontController (lee el input del usuario y selecciona la vista a realizar), el UsuarioController y listAction (con su list.phtml) pertenecen a la capa de la Vista del Modelo MVC, y como dices el UsuarioModelo es la Capa del Modelo.

Saludos.
  #22 (permalink)  
Antiguo 17/12/2010, 16:14
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: MVC - dos acciones misma URL ?

Cita:
el UsuarioController y listAction (con su list.phtml) pertenecen a la capa de la Vista del Modelo MVC
haaaa ahora si, por eso nunca me quedaba claro jeje

Y estaba en la wikipedia pero nunca lo interpretaba
Cita:
La unión entre capa de presentación y capa de negocio conocido en el paradigma de la Programación por capas representaría la integración entre Vista y su correspondiente Controlador de eventos y acceso a datos

Gracias GatorV
  #23 (permalink)  
Antiguo 17/12/2010, 16:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: MVC - dos acciones misma URL ?

Es un poco complicado de entender si lo ves en archivos como tal, es por eso que mucha gente se confunde porque piensa que archivo A = Controlador, Archivo B = Vista, etc. el Model MVC describe un patrón abstracto que habla de capas, no de archivos y muchos frameworks tratan de limitarse a eso a tener archivos que corresponden a cada capa, pero no quiere decir que este bien, ni que este mal.

En mi particular punto de vista la forma de implementación de Zend se me hace mucho más limpia, aunque eso no significa que sea la correcta o incorrecta, el patrón MVC se puede implementar de muchas formas y es probable que algunas formas sean más correctas para problemas específicos.

Es por algo que aqui siempre digo que no hay que ser tan puristas y decir x o y framework son malos por x o y, un patrón de diseño es eso, una guia de como una clase se debería de conformar, más no comportar, y un programador puede tener un entendimiento diferente a otro y mientras respeten lo abstracto del patrón van de gane.

Saludos.
  #24 (permalink)  
Antiguo 17/12/2010, 17:27
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

gracias por los aportes... pero sera que entonces, para cada URL-tipo (home y distintas secciones de la web) requiero de una Vista y de un Controlador nuevo ?

Creo a estas alturas que es asi........pero es ?

Cita:
Iniciado por Italico76 Ver Mensaje
ANTE TODO GRACIAS Dany_s

Entonces...requiero UNA VISTA para recorrer un array (en seccion noticias), OTRA VISTA (y otro controlador) para recorrer el otro array (usuarios) en la seccion usuarios y una TERCERA VISTA para recorrer los dos en la misma pagina (en la HOME)???
__________________
Salu2!
  #25 (permalink)  
Antiguo 17/12/2010, 19:30
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Respuesta: MVC - dos acciones misma URL ?

No lo requieres symfony y ZF implementan el patron front controller para recivir las peticiones y un dispacher delega la resposabilidad de la peticion a una implementacion del patron comand que es el que sabe que debe de hacer con ella.
__________________
Saludos!
Mty-NL..
  #26 (permalink)  
Antiguo 18/12/2010, 05:49
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: MVC - dos acciones misma URL ?

Cita:
Iniciado por HerSAn Ver Mensaje
No lo requieres symfony y ZF implementan el patron front controller para recivir las peticiones y un dispacher delega la resposabilidad de la peticion a una implementacion del patron comand que es el que sabe que debe de hacer con ella.



De patrones se poco, pero si es un patron de delegacion como el Strategy... voy comprendiendo.
__________________
Salu2!

Etiquetas: acciones, dos, mvc, url
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 01:34.