hoy vengo a molestarlos con una duda de teoria/funcionamiento para ver si me pueden guiar en la mejor forma de solucionarlo jeje.
Supongamos que estamos haciendo un blog el cual muestra todas la categorias del blog en la barra de la derecha, mas los links amigos, y en el footer muestra los ultimos 5 post cargados y los ultimos 5 comentarios.
Bien para mostrar esto en la vista sería simple, en el controlador index cargo los modelos de post, comentarios y categorias, llamo a los métodos que me devuelven esos valores y se los paso a la vista:
Código PHP:
Ver original
class index extends controller{ $data['ultimosPost'] = $this->Post->ultimosPost(); $data['ultimosComentarios'] = $this->Comenterios->ultimosComentarios(); $data['categorias'] = $this->Categorias->listadoCategorias(); $this->Vista->show('index.php,$data); }
Hasta ahí todo de maravilla, pero supongamos que estos mismos datos los tengo que mostrar en 10 controladores mas, debería copiar y pegar estas lineas en todos aquellos controladores cuyas vistas van a mostrar estos datos. Lo cual me parece poco "practico".
Lo que hice fue crear un método llamado "helpers" (tomando la idea de CI), el cual carga un archivo el cual contiene funciones las cuales se puede llamar desde cualquier vista en la cual su controlador se haya cargados por ejemplo:
Código PHP:
Ver original
class index extends controller{ $this->Vista->show('index.php,$data); } class post extends controller{ $this->modelo(array('categoria','post','comentarios')); $this->helpers(array('categorias','footer','links')); $this->Vista->show('index.php,$data); }
donde el helpers fooer es un archivo footer.php con esto:
Código PHP:
Ver original
function post(){ include_once('modelos/PostModel.php'); include_once('modelos/ComentariosModel.php'); $post = new Post(); return $post->->ultimosPost(); } function comentarios(){ include_once('modelos/ComentariosModel.php'); $comentarios = new Comentario(); return $comentarios ->->ultimosComentarios(); }
Esto actualmente me funciona de maravilla, pero ahora viene mi duda....
Al estar llamando a los modelos desde el helpers no estoy rompiendo el patron MVC?
sería correcto poder aplicar MV en los helpsers si no estoy rompiendo el patron MVC, es decir que los helpers pueda invocar modelos y tener sus propias vistas?, por ejemplo que tengan una estructura asi:
helpers
--------- comenterios
---------------- comentarios.php
---------------- template
--------------------- comentarios.html
--------------------- comentarios_post.html
que otra forma me sugieren para llamar a secciones comunes de las vistas las cuales requieren hacer uso de los modelos, sin tener que copiar y pegar código?.
) creo que tendriamos que establecer bien que es un helper, ya que segun entiendo en mi poca experiencia y muy equivoca en muchos aspectos con el MVC un helper son funciones para ayudarnos en las vistas de tal manera que podamos incluir archivos .CSS y .js en el layout y generar codigo html y cosas asi con simples llamados entonces, si mi concepto no esta errado (que puede un 99.9% que si) los helper que estas declarando en el controlador deberian de ser llamados en la vista, de tal manera que no rompas ningun esquema según yo, ahora en mi experiencia en cakePHP hay algo que se llama componentes que son clases que incluyes en los controladores para no repetir mil y una vez las mismas cosas, por ejemplo yo hice uno sencillo para el calculo de edad ya que lo utilizaba al mostrarla en el perfil del usuario, y en otras ocaciones que ahora no recuerdo bien y solo llamaba al componente que segun creo es lo que necesitas, bueno eso para intentar ayudarte un poco a ti, ahora mi duda quizas sea tonta y fuera de lugar pero no he encontrado documentacion, los helper en si son incluidos en la clase base de la vista o en que manera deben de estar incluidos estos?? porque yo al principio lo hice como indico el amigo en el controller donde necesitava alguno pero esto me dijo un amigo que es incorrecto que debria de llamarlos desde la vista, pero no me explico como (tan pana el no



