Foros del Web » Programando para Internet » PHP »

PHP OO Include con DWOO engine template

Estas en el tema de Include con DWOO engine template en el foro de PHP en Foros del Web. Hola a todos. La cuestión es que estoy desarrollando mi propio framework MVC, y estoy utilizando dwoo como motor de plantillas. El problema reside, en ...
  #1 (permalink)  
Antiguo 19/09/2011, 21:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Pregunta Include con DWOO engine template

Hola a todos.

La cuestión es que estoy desarrollando mi propio framework MVC, y estoy utilizando dwoo como motor de plantillas.

El problema reside, en cuanto intento hacer un include a través de una llamada, ya que en mi framework toda llamada pasa a través de index.php, y mediante un parámetro se selecciona la vista.

En mi dwoo tpl intento con esto:

{include('index.php?v=header')}

{include('index.php?v=footer')}

...

Pero no me funciona.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #2 (permalink)  
Antiguo 20/09/2011, 00:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Include con DWOO engine template

Hasta cierto punto, es logico que no funcione, porque los includes debes hacerlos por directorio y no por URL y, ya que estas creando un framework, creo que convendria establecer una constante con la ruta raiz del sitio y, a partir de ahi, podras teclear el resto de la ruta para incluir otros archivos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 20/09/2011, 03:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Include con DWOO engine template

Hola Triby, gracias por contestar.

Si, tengo creadas varias variables con el claspath de la aplicación, y en cuanto al include. He estado mirando en su wiki, y en la sección de la función include me he encontrado con esto.

http://wiki.dwoo.org/index.php/Functions:include

Entonces, me he fijado que hay dos maneras de incluir, una que ponía el header.html y otra que utiliza una propiedad file, así que he pensado que ahí realizaria la llamada al servidor.

La cuestión, es que no me vale hacer un include del archivo, html, tpl, o lo que sea, ya que esos archivos también tienen una parte de lógica, y esta se ejecuta en la parte del modelo, es decir, que para que ese include funcione correctamente debe si o si, hacer una llamada al servidor.

Yo vengo de JavaEE, y ahí los includes hacen la llamada al servidor, y este ya realiza todas las labores del modelo y la vista, aquí la idea es la misma.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #4 (permalink)  
Antiguo 20/09/2011, 06:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Include con DWOO engine template

Cita:
Iniciado por MiLLeN
Yo vengo de JavaEE, y ahí los includes hacen la llamada al servidor, y este ya realiza todas las labores del modelo y la vista, aquí la idea es la misma.
Pues tal vez tu idea sea la misma, pero esto es muy diferente de JavaEE, recuerda que PHP por lo general se usa para web y, al incluir un archivo por URL lo que te devolvera sera "codigo html", nunca un codigo PHP para ejecutar.

O bien, te dara un error al incluir index.php porque si es tu controlador (bootstrap o script de inicio) necesariamente ya habra ejecutado el codigo, creado variables, definido constantes y funciones.

Cita:
Iniciado por MiLLen
La cuestión, es que no me vale hacer un include del archivo, html, tpl, o lo que sea, ya que esos archivos también tienen una parte de lógica, y esta se ejecuta en la parte del modelo, es decir, que para que ese include funcione correctamente debe si o si, hacer una llamada al servidor.
Aqui el problema es que tu planteamiento es erroneo, las plantillas no deben incluir mayor logica que algunos ifs y ciclos, mas aun si estas usando MVC, donde:

Modelo = Acceso a datos, persistencia o como lo quieras llamar
Vista = Mostrar los datos obtenidos en Controlador + Modelo
Controlador = Procesa toda la logica, obtiene datos y los prepara para mostrar la Vista

Teoricamente (porque no lo conozco) Dwoo es un procesador de plantillas, interpretara y ejecutara el codigo que encuentre, por lo que:

Código:
{include('header.html')}
{include(file='site_header.tpl' title='About Us')}
Son pseudo-etiquetas que Dwoo procesara para incluir el archivo que especifiques y, de hecho, el enlace que pones, no es para decirte como incluir archivos en tus controladores, sino en la plantilla misma.

Debes regresar al inicio de la documentacion http://wiki.dwoo.org/index.php/GettingStarted, hacer pruebas sencillas hasta entender bien como funciona y despues integrarlo en tu framework.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 20/09/2011, 10:34
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Include con DWOO engine template

Cita:
Iniciado por Triby Ver Mensaje
Pues tal vez tu idea sea la misma, pero esto es muy diferente de JavaEE, recuerda que PHP por lo general se usa para web y, al incluir un archivo por URL lo que te devolvera sera "codigo html", nunca un codigo PHP para ejecutar.

O bien, te dara un error al incluir index.php porque si es tu controlador (bootstrap o script de inicio) necesariamente ya habra ejecutado el codigo, creado variables, definido constantes y funciones.
Lo que yo espero con el include ya es el código HTML, no PHP para ejecutar, de hecho, se perfectamente como solucionar este problema, y en ello estoy, simplemente llamando a una función (loadView('nombre_de_la_vista')) que tengo que me ejecuta una llamada a mi Controlador nueva y me devuelve todo como yo quiero, la historia esta en que al ver ese función "include" en dwoo pienso que alguna forma debe de haber para no tener que hacer yo la llamada directamente desde mi capa de modelo, pero si no hay mas remedio así lo haré.

Mi controlador, como te he explicado anteriormente, puede realizar perfectamente estas funciones, de hecho las realiza, sino utilizo el motor de plantillas, poniendo este codigo en mi vista .php lo hace.

<?php $this->loadView('mi_pagina'); ?>

Realiza las labores del modelo e imprime el código html ya procesado.

Cita:
Iniciado por Triby Ver Mensaje
Aqui el problema es que tu planteamiento es erroneo, las plantillas no deben incluir mayor logica que algunos ifs y ciclos, mas aun si estas usando MVC, donde:

Modelo = Acceso a datos, persistencia o como lo quieras llamar
Vista = Mostrar los datos obtenidos en Controlador + Modelo
Controlador = Procesa toda la logica, obtiene datos y los prepara para mostrar la Vista

Teoricamente (porque no lo conozco) Dwoo es un procesador de plantillas, interpretara y ejecutara el codigo que encuentre, por lo que:

Código:
{include('header.html')}
{include(file='site_header.tpl' title='About Us')}
Y así es, mis plantillas solo utilizan las funciones ifs, loop y pretendía que la include... Como te he explicado anteriormente, toda la lógica de negocio se realiza antes y en otro archivo que provee las variables en un array propio de dwoo.

Otra idea que estoy manejando es modificar directamente yo el framework, como me imagino que se podrá editar el motor de plantillas, de tal manera que lo único que tengo que hacer es crear una nueva función que directamente llame a mi función del controlador, pero me parece que esa funcion include tiene toda la pinta de ser lo que necesito.

PD: Efectivamente...

http://wiki.dwoo.org/index.php/WritingPlugins

Se pueden agregar tus propias funciones, tremendo, me voy a poner a ello y te cuento.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #6 (permalink)  
Antiguo 20/09/2011, 16:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Include con DWOO engine template

Se supone que no deberias no necesitas editar el codigo del motor de plantillas, sino aprovechar su utilidad, de forma que si lo configuraste correctamente y colocas una pseudo-etiqueta {include('archivo.tpl')} el sistema sabra exactamente de que ruta obtener ese archivo.

En fin, para gustos.... los colores.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 20/09/2011, 16:21
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: Include con DWOO engine template

Exacto creo que lo que quieres hacer esta más que desaconsejado, de hecho Frameworks como Zend que incluian plugins como el action helper (para hacer eso que quieres hacer) fueron deprecados.

¿La razón?

Un buen diseño de tu FW, más un buen diseño de tu app (view helpers) deben de ser suficientes para incluir en tu salida lo que necesitas, ya que si necesitas hacer el dispatch completo y mandarle valores, cuando tu aplicación crezca, vas a encontrar que el rendimiento es muy pobre a que si tuvieras solo un plugin/helper en tu vista que incluyera un trozo de resultado de tu proceso. Aparte de que la re-utilización es mucho mayor al estar desacoplada a un request HTTP.

Saludos.

Etiquetas: dwoo, include
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 18:58.