Foros Linux Argentina
Febrero 07, 2012, 06:26:17 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Para algun desarrolador  (Leído 5068 veces)
rodri_mirindi
Visitante


Email
« : Abril 10, 2004, 06:26:06 »

Hola saludos, hoy aporto con alguna configuracion y peque?isimo desarrollo para los interesados en trabajar con ?motores de plantillas, tambien podran encontrar esta configuracion en www.postgresql.cl (aporte que hice alguna vez), "Smarty"..............

Una de las inquietudes y comentarios mas escuchados en este ultimo tiempo es:

Como separar el c?digo de programaci?n de el dise?o de las paginas en los sistemas web, para asi evitar problemas entre las personas que tienen asignada estas misiones.

Ac? va una gu?a "practica" para instalar Smarty, un motor de plantillas cuyo uso sin duda ira aumentando en los desarrollos orientados a la web; y mas aun ahora, debido al creciente uso que esta teniendo UML (Lenguaje para Modelamiento Unificado) para el modelamiento de sistemas.

Cabe aclarar que UML no esta orientado a PHP, pero si se puede en parte adecuar para esta funcion. Quiz?s con PHP5 o posteriores esto se vea mas claro.


Comenzamos sin dejar de decir que se requiere tener instalado la versi?n de PHP 4.0.6 o superior, y que este documento esta orientado a los sistema Gnu/Linux.

Bueno, lo primero es bajar Smarty desde el link:
http://smarty.php.net/download.php
en este documento trabajare con la versi?n Smarty-2.6.1.tar.gz


Descomprimimos y desempaquetamos Smarty:
# tar zxvf Smarty-2.6.1.tar.gz


Gracias al paso anterior aparecera la carpeta Smarty-2.6.1, y dentro de ella los siguientes archivos y directorios, los cuales deberemos mover a la carpeta con aplicaciones web.

En este caso mi aplicaci?n web esta en la carpeta "ejemplo1" que se localiza en
/var/www/html/ejemplo1
entonces a mover los archivos:

#mv??Smarty.class.php? ? ?/var/www/html/ejemplo1
#mv??Smarty_Compiler.class.php? ? ?/var/www/html/ejemplo1
#mv? Config_File.class.php? ? ?/var/www/html/ejemplo1
#mv? debug.tpl? ? ?/var/www/html/ejemplo1

y los siguientes directorios con todo su contenido:

#mv? core/*.php? ? ?/var/www/html/ejemplo1
#mv? plugins/ *.php? ? ?/var/www/html/ejemplo1


Deber?a quedar de esta forma:

/var/www/html/ejemplo1/Smarty.class.php /var/www/html/ejemplo1/Smarty_Compiler.class.php /var/www/html/ejemplo1/Config_File.class.php
/var/www/html/ejemplo1/debug.tpl
/var/www/html/ejemplo1/core/*.php
/var/www/html/ejemplo1/plugins/*.php


Crearemos 4 directorios:? ? ?templates, ?templates_c,? configs y? cache
dentro de: ? /var/www/html/ejemplo1

hagamoslo entonces:
mkdir ?templates ?templates_c ?configs ?cache


Con lo cual el directorio ejemplo1 debiera verse as?:

/var/www/html/ejemplo1/templates/
/var/www/html/ejemplo1/templates_c/
/var/www/html/ejemplo1/configs/
/var/www/html/ejemplo1/cache/
/var/www/html/ejemplo1/Smarty.class.php /var/www/html/ejemplo1/Smarty_Compiler.class.php /var/www/html/ejemplo1/Config_File.class.php
/var/www/html/ejemplo1/debug.tpl
/var/www/html/ejemplo1/core/*.php
/var/www/html/ejemplo1/plugins/*.php


Bueno, les dire que el motor de plantillas Smarty necesita acceso de escritura a algunos subdirectorios.
Si examinas el archivo de configuracion de Apache (httpd)
/etc/httpd/conf/httpd.conf

podras ver qu? usuario, y qu? grupo tiene asignado el servidor web Apache.
Si no lo ves generalmente son el usuario "nobody" , y el grupo "nobody".

Dentro del directorio: /var/www/html/ejemplo1
puedes entregar o asignar permisos de esta forma:

#chown ? nobody:nobody ? templates_c/
#chmod ? 770 ? templates_c/
#chown ? nobody:nobody ? cache/
#chmod ? 770 ? cache/


Una vez realizado lo anterior estaremos en condiciones de realizar nuestra primera prueba. Vamos a realizar, con tu editor favorito, tres script's.
Para ser mas especificos:

index.php,
include.php
index.tpl


include.php seria asi:

<?
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = 'templates/';
$smarty->compile_dir = 'templates_c/';
$smarty->config_dir = 'configs/';
$smarty->cache_dir = 'cache/';
?>


y lo guardaremos dentro de: /var/www/html/ejemplo1
quedando entonces como:

/var/www/html/ejemplo1/include.php


index.tpl seria asi:

{* comentarios en smarty *}
{*Va a resultar nuestra primera prueba de eso estoy seguro*}
{$probando}


y lo guardamos en: /var/www/html/ejemplo1/templates
quedando como:

/var/www/html/ejemplo1/templates/index.tpl


index.php seria:

<?
require('include.php');
$smarty->assign('probando','La siempre aburrida prueba Hola Mundo');
$smarty->display('index.tpl');
?>


y lo guardamos en: /var/www/html/ejemplo1
quedando como:

/var/www/html/ejemplo1/index.php


Luego vamos al navegador, donde yo coloco en mi caso por la ubicaci?n de las aplicaciones web:
http://127.0.0.1/ejemplo1/

En caso de no funcionar lo m?s probable que alla cometido un error usted. ;-)

si el error estuviera relacionado con los permisos abra una ventana terminal, y dentro del directorio?? /var/www/html/ejemplo1? ?coloque lo siguiente:

#chmod ??777 ??templates_c/
#chmod ??777 ??cache/

Si tampoco funcionara revise los permisos de cada carpeta de la aplicaci?n.

Nota: El directorio usado fue solo un ejemplo, pueden usar el que ustedes quieran siempre que respeten los par?metros que entregamos en este peque?a gu?a.


Realizaremos un ejemplo un poco m?s grande trabajando con POSTGRESQL.


Las agendas y libretas de fonos son una aplicacion clasica, en este caso usaremos esta ultima ya que no necesitamos mas campos.


1- Crearemos al comenzar una base de datos y una tabla.

Huh?#createdb libreta


? ? ?CREATE TABLE libreta (
? ? ? ? ? ? ? ? ? id integer not null,
? ? ? ? ? ? ? ? ? nombre varchar(100),
? ? ? ? ? ? ? ? ? telefono varchar(20)
? ? ? ? ? ? ? ? ? );



2 - El estilo de programaci?n cuando se trabaja con Smarty se puede ver de mejor forma en los scripts.

Aqui detallo los scripts *.php que vamos a crear, y que deben ser guardados en nuestro directorio:
/var/www/html/ejemplo1/


include.php
config.php
index.php
ingresar.php
guardar.php
mostrar.php


y las plantillas *.tpl, que deben ser guardadas en nuestro directorio:
/var/www/html/ejemplo1/templates


index.tpl
mostrar.tpl
ingresar.tpl

Comenzamos con el script de conexi?n a la base de datos:

config.php

? <?
? // los par?metros para el acceso a la base de datos
? $host = "localhost";
? $user = "postgres";
? $pass = "postgres";
? $db = "libreta";

?// conectarse a la base de datos
? $conexion = pg_connect("host=$host dbname=$db user=$user password=$pass ? ?port=5432");
? if (!$conexion){
? die("No ha sido posible establecer la conecci?n con la base de datos.");
? }
? ?>




En el siguiente script indicamos a la clase Smarty la ubicacion de los directorios creados anteriormente.


include.php


?<?
? require('Smarty.class.php');
? $smarty = new Smarty;

? $smarty->template_dir = 'templates/';
? $smarty->compile_dir = 'templates_c/';
? $smarty->config_dir = 'configs/';
? $smarty->cache_dir = 'cache/';
? ?>



En el siguiente script ponemos algo de parafernalia para poder navegar.
En este ejemplo trabaja con index.tpl.



index.php

?<?
? //para trabajar con Mart?
? require("include.php");

? $smarty -> assign('DESEO','QUE DESEA HACER');
? $smarty -> display('index.tpl');
? ?>

En el siguiente script mostramos la asignaci?n de valores a variables con Smarty.

En realidad este script no tenia mucha necesidad de crearse ya que son solo textos
los que se asignan a las variables, pero lo hice para que lo tomen como ejemplo.
Trabaja con ingresar.tpl

ingresar.php

<?
? //para trabajar con smarty
? require("include.php");
? $smarty ->assign('Titulo','Ingresar Nombre y Fono');
? $smarty ->assign('encabezado','Ingresar Nombre y Fono');
? $smarty ->assign('campo1','Nombre'); $smarty ->assign('campo2','Fono');
?
? $smarty ->display('ingresar.tpl');
?>



El siguiente script inserta en la tabla libreta, los datos de las personas agregadas.

guardar.php
<? // conexion a la base de datos
? require("config.php");
? // recibe los datos enviados desde el formulario
? $nombre =$nombre;
? $tel =$fono;
?
? $sql = "BEGIN TRANSACTION";
? $result = pg_query($sql) or die("Error en el query: $query. " . pg_last_error($connection));

?//select para sacar cuantos hay solamente lo hago as? porque me siento ? ?mas seguro
? //de aumentar yo ?l id que es un numero secuencial
? $sqlc .=" select * from libreta";
? $res = pg_query($sqlc);
? $contador = 0;
? while($row=pg_fetch_array($res))
? {
? ? $contador++;
? }
? $contador++;

? $sqli .=" insert into libreta (lib_id,lib_nombre,lib_fono)";
? $sqli .=" values('$contador','$nombre','$fono')";
? $resi = pg_query($sqli);

? if (!$resi)
? ? {
? ? $error = pg_last_error($conexion);
? ? $termino = "ROLLBACK";
? ? echo "Ocurrieron errores al intentar ingresar valores en la base de datos.
? ? analizar el mensaje enviado:
? ? <ul>
? ? $error
? ? </ul>
? ? ";
? ? }
? ? else
? ? {
? ? $termino = "COMMIT";
? ? echo "<script>alert('Los datos se han ingresado correctamente');</script>";
? ? }

? pg_query($termino);
?
? // cierro conexion a la base de datos
? pg_close($conexion);
?
? echo "<script>location.href='index.php'</script>";
?>


Script que despliega el total de personas dentro de la tabla libreta.
Trabaja con mostrar.tpl

mostrar.php


<? // conexi?n a la base de datos
? require("config.php");

? // para trabajar con smarty
? require("include.php");

? // Consulta a base de datos
? $sql ="select * from libreta";
? $sql .=" order by lib_nombre";
? $res = pg_query($sql) or die("Error en el query: $sql. " . pg_last_error($connection));
? $rows = pg_num_rows($res);
? $cont = "En este momento hay $rows Personas en la Libreta de fonos.";

? // cerrar la conexi?n con la base de datos
? pg_close($conexion);

?while($row=pg_fetch_array($res))
? {
? ? $smarty->append('Libreta', array(
? ? 'ID' => $row["lib_id"],
? ? 'NOMBRE' => $row["lib_nombre"],
? ? 'FONO' => $row["lib_fono"]
? ? ));
? }

?$smarty ->assign('TEMA','Libreta de Fonos');
? $smarty ->assign('ENCABEZADO','Libreta de Fonos');



$smarty ->assign_by_ref('VALOR',$cont);

$smarty ->display('mostrar.tpl');

?>

Ahora las plantillas:

La siguiente es solo para navegar por el ejemplo, las variables desplegadas con {$x} vienen de index.php

index.tpl


<table align="center"> ? ?
?<tr>
? ?<td>
? ? ? <b>{$DESEO}</b>
? ?</td>
?</tr>
</table> ? ?

<table width="449" border="0" align="center" bgcolor="#CCCCCC">
?<tr>
? ?<td align="center">
? ? ?<input type="button" name="ingreso" value="Ingresar" ? ?
? ? ? ? ? ? onclick="javascript:location.href='ingresar.php';">
? ? ?<input type="button" name="ingreso" value="Mostrar" ? ?
? ? ? ? ? ? onclick="javascript:location.href='mostrar.php';">
? ?</td>
?</tr>
</table>


Otra plantilla

las variables desplegadas con {$x} vienen de ingresar.php



ingresar.tpl


<html>
?<head>
? ?<title>{$titulo}</title>
? ?<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
?</head>

?<body>
? ?<form name="form1" action="guardar.php" method="post">
? ? ?<table width="449" border="0" align="center" bgcolor="#CCCCCC">
? ? ? ?<tr>
? ? ? ? ?<td col colspan="2" align="center">
? ? ? ? ? ?<div align="center">
? ? ? ? ? ? ?<b><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFFFFF">
? ? ? ? ? ? ? ? {$encabezado}
? ? ? ? ? ? ?</b>
? ? ? ? ? ?</div>
? ? ? ? ?</td>
? ? ? ?</tr>
? ? ? ?<tr>
? ? ? ? ?<td width="217">
? ? ? ? ? ?<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#GGGGGG">
? ? ? ? ? ? ?{$campo1}
? ? ? ? ? ?</font>
? ? ? ? ? ?&nbsp;<input type="text" name="nombre">
? ? ? ? ?</td>
? ? ? ? ?<td width="216">
? ? ? ? ? ?<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#GGGGGG">
? ? ? ? ? ? ?{$campo2}
? ? ? ? ? ?</font>
? ? ? ? ? ?&nbsp;<input name="fono" type="text">
? ? ? ? ?</td>
? ? ? ?</tr>
? ? ? ?<tr>
? ? ? ? ?<td colspan="2" align="center">
? ? ? ? ? ?<input type="submit" name="Submit" value="Agregar">
? ? ? ? ? ?<input type="button" name="volver" value="Volver/Cancelar"
? ? ? ? ? ? ? ? ? onclick="javascript:location.href='index.php';">
? ? ? ? ?</td>
? ? ? ?</tr>
? ? ?</table>
? ?</form>
?</body>
</html>

Plantilla para el despliegue de las personas que est?n ya registradas.

Las variables {$x} vienen de mostrar.php

mostrar.tpl:

<html>
?<head>
? ?<title>{$TEMA}</title>
?</head>
?<body bgcolor="#ffffff">
? ?<table align="center">
? ? ?<tr>
? ? ? ?<td>{$VALOR}</td>
? ? ?</tr>
? ?</table>
? ?<table align="center">
? ? ?<tr>
? ? ? ?<td align="center">
? ? ? ? ?<b>{$ENCABEZADO}</b>
? ? ? ?</td>
? ? ?</tr>
? ?</table>
? ?<table width="449" border="0" align="center" bgcolor="#CCCCCC">
? ? ?{section name=despliege loop=$Libreta}
? ? ?<tr>
? ? ? ?<td>
? ? ? ? ?{$Libreta[despliege].ID}
? ? ? ?</td>
? ? ? ?<td>
? ? ? ? ?{$Libreta[despliege].NOMBRE}
? ? ? ?</td>
? ? ? ?<td>
? ? ? ? ?{$Libreta[despliege].FONO}
? ? ? ?</td>
? ? ?</tr>
? ? ?{/section}
? ? ?<br>
? ?</table>
? ?<br>
? ?<table align="center">
? ? ?<tr>
? ? ? ?<td align="center">
? ? ? ? ?<input name="vol" type="button" value="Volver" ?
? ? ? ? ? ? ? ? onclick="javascript:location.href='index.php';">
? ? ? ?</td>
? ? ?</tr>
? ?</table>
?</body>
</html>

Nos vemos muy pronto con otro aporte......
« Última modificación: Abril 10, 2004, 06:30:38 por rodri_mirindi » En línea
Foros Linux Argentina
   

 En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.13 | SMF © 2006-2011, Simple Machines LLC
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!