Professional Documents
Culture Documents
Vistas dinmicas y
Templates
74
MANUAL DE MVC
reo que la consulta ms frecuente que he recibido desde que publiqu mi libro
POO y MVC en PHP, ha sido cmo evitar embeber cdigo de programacin en el
HTML para completar una tabla o lista de seleccin (select) con los resultados de
una consulta a base de datos. Y cranme: es sumamente sencillo.
Primero, es necesario saber, que existen tres tipos de sustituciones que pueden
efectuarse en las vistas:
1. Sustituciones estticas: es el caso de una plantilla HTML en la que se deben
sustituir ciertos datos de forma esttica. Es decir, plantillas HTML en las que cada
indicador de sustitucin, debe ser reemplazado por un valor concreto.
2. Sustituciones dinmicas: son aquellas plantillas HTML en las cules un mismo
indicador de sustitucin, debe ser reemplazado de forma iterativa por ms de un
dato. Por ejemplo, una lista de seleccin que deba reemplazarse con los
resultados devueltos por una consulta de seleccin mltiple a base de datos.
2012 Hackers & Developers Magazine Creative Commons Atribucin NoComercial CompartirIgual 3.0. www.hdmagazine.org
75
2012 Hackers & Developers Magazine Creative Commons Atribucin NoComercial CompartirIgual 3.0. www.hdmagazine.org
76
77
<h1>$titulo</h1>
</header>
<article>
$contenido
</article>
</body>
</html>
Mientras que en PHP, no existe ninguna regla al respecto, quedando al libre albedro del
diseador, la eleccin de estilo de los identificadores de sustitucin. Un clsico en los
identificadores de sustitucin en PHP, es encerrar las palabras identificadoras entre
dos llaves, de apertura y cierre respectivamente {}:
<!doctype html>
<html lang="es">
<head>
<charset="utf-8">
<title>{titulo}</title>
</head>
<body>
<header>
<h1>{titulo}</h1>
</header>
<article>
{contenido}
</article>
</body>
</html>
78
plantilla = archivo.read()
Sustituciones estticas
Tanto en Python como en PHP, las sustituciones estticas se realizan siguiendo los tres
pasos estndar mencionados en el punto anterior: traer la plantilla, crear el diccionario y
realizar la sustitucin.
Si los datos sustitutos debieran traerse desde una consulta a base de datos, primero
se realizar la consulta SQL, luego se almacenarn los datos retornados en variables y,
finalmente, dichas variables se asignarn como valores de las claves del diccionario, sin
ms complejidad que sta.
2012 Hackers & Developers Magazine Creative Commons Atribucin NoComercial CompartirIgual 3.0. www.hdmagazine.org
79
Sustituciones dinmicas
En las sustituciones dinmicas, la mayor complejidad radica en la obtencin del cdigo
HTML sobre el cual la sustitucin debe realizarse.
La plantilla HTML se deber obtener de forma estndar, mientras que de ella, antes de
proceder con los dos pasos siguientes, se deber recuperar slo la fraccin de cdigo
HTML sobre la cul realizar los reemplazos. Dicha fraccin de cdigo, se obtendr
definiendo previamente, la siguiente expresin regular:
<!--NOMBRE-DE-LA-SUSTITUCION-DINAMICA-->(.|\n){1,}<!--NOMBRE-DE-LA-SUSTITUCION-DINAMICA-->
Una vez obtenido el match (fragmento de cdigo HTML coincidente con la expresin
regular), tanto el diccionario como las sustituciones, debern realizarse de manera
estndar pero dentro de un bucle, condicionado por la cantidad de registros obtenidos
de la consulta SQL. La nica salvedad, es que ambos pasos debern realizarse en la
misma estructura de control cclica y, el resultado de cada sustitucin, sumarse dentro de
una misma variable. La sustitucin, en este caso, se efectuar sobre el match y no sobre la
plantilla.
Sustitucin iterativa en PHP:
$render = "";
foreach($registros as $array) {
$diccionario = array(
"{nombre}"=>$array[0],
"{apellido}"=>$array[1],
"{telefono}"=>$array[2]
);
$render .= str_replace(array_keys($diccionario),
2012 Hackers & Developers Magazine Creative Commons Atribucin NoComercial CompartirIgual 3.0. www.hdmagazine.org
80
array_values($diccionario), $match);
Sustituciones combinadas
Cuando en una misma plantilla se necesite efectuar una sustitucin esttica y una o ms
sustituciones dinmicas, el proceso se har paso a paso. Esto significa, que en primer
lugar, se efectuar la sustitucin esttica. El resultado obtenido en ese render, deber
ser aquel sobre el cul se realice el match para la sustitucin dinmica. Es decir, que
cuando se llegue al proceso de sustitucin dinmica, no se volver a traer la plantilla,
sino que se utilizar el cdigo ya renderizado, obtenido en el proceso de sustitucin
esttica.
2012 Hackers & Developers Magazine Creative Commons Atribucin NoComercial CompartirIgual 3.0. www.hdmagazine.org