Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/11/2005, 20:17
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me parece que empezaste la casa por el tejado. Primero debes tener bien claro el concepto de un motor de gestión de templates como es Smarty .. sobre todo saber la base de los mismos: separa la lógica de la presentación .. aunque este concepto en Smarty con su propio psudo lenguaje de programación que incorpora se complica y se confunde el tema.

En principio .. en -cualquier- "motor" de gestión de plantillas (templates) en su uso más basico es el script PHP (tu "lógica") la que debe recibir los datos de un formulario por ejemplo y generar la "plantilla" a usar si corresponde.

Antes de liarte usando el lenguaje de programación de Smarty propio, intenta resolver el problema con el uso básico de este tipo de gestores de plantillas. Soy de la filosofía para bien o para mal de que "cada cosa que haga su trabajo" .. para que programo en "Smarty" si ya uso PHP para programar? .. Intento no mezclar .. sobre todo para el caso hipotetico: a mitad de desarrollo te dicen que ya no vas a usar Smarty sino otro motor de gestión de plantillas .. En ese caso toda esa "lógica" de Smarty (de la que creas en tus plantillas) ya no te serviría .. el cambio sería realmente drastico en tus aplicaciones.

Al grano .. (aclaro que no he usado Smarty .. Tal vez diras "y para que me responde "este" que no lo ha usado .. bueno, pues simplemente por que te voy a dar mi punto de vista .. si quieres lo tomas y sino, lo dejas).

Para empezar ... no me quedó claro:
Cita:
como uso smarty para un sitio que necesita varios formularios y no se mueve con simples links
Tampoco me quedó claro:
Cita:
ejemplos de como usar las cosas en una sola pagina
Debemos empezar a usar un lenguaje común .. no puedes hablar de "pagina" .. por qué aquí tienes: el scirpt PHP, tu template y el resultado de todo esto será tu "página" cara a un navegador .. así que debes especificar concretamente a que te refieres, de hecho si fueses capaz ya de diseñar tu "ABM" al estilo clásico sin uso de "Smarty" .. se podría ver como adaptar el uso de las "templates" a lo que ya pudieras tener hecho o en mente.

Si entendí bien el concepto que defines como "en una sola página" ...

Se trata de que veas cada proceso como una página a generar y que esta página usará un template que será generado por PHP y Smarty. Tendrás en un mismo "script" PHP si es que así lo quieres todo .. dos tipos de cosas: procesos puros PHP y los que generen salida.

index.php
Código PHP:
<?php
switch ($_REQUEST['accion']){
    case 
"editar":
           
// Obtienes tus datos de tu consulta SQL a tu BD de la forma habitual.
           // Como ejemplo . .fijo un valor a la variable para el coso:
           
$nombre="Pepe";
           
           
// Y generas tu plantilla.
           
$smarty = new Smarty;
           
$smarty->assign('nombre'$nombre);
           
$smarty->display('formulario.tpl');
    break;
    case 
"guardar":
      
// procesas el dato recibido y lo almacenarías en tu BD o lo que sea ..
      
echo $_POST['nombre']; // esto es sólo un ejemplo para saber que llegó tu dato desde tu "template" del formulario.tlp
    
break;
    case 
"nuevo":
           
// Generas tu plantilla.
           
$smarty = new Smarty;
           
$smarty->display('formulario.tpl');
    break;
    default:
          
$smarty = new Smarty;
          
$smarty->display('pordefecto.tpl');

}

?>

Y los .tlp (plantilas):

pordefecto.tlp
Código PHP:
<html>
<
head>
</
head>
<
body>
Estado por defecto ...
<
a href="index.php?accion=nuevo">crear nuevo registro</a><br>
<
a href="index.php?accion=editar">Editar supuesto registro 1</a>
</
body>
</
html
formulario.tlp
Código PHP:
<html>
<
head>
</
head>
<
body>
<
form action="index.php" method="post">
<
input type="hidden" name="accion" value="guardar">
<
input type="text" name="nombre" value="{$nombre}">
<
input type="submit" name="submit" value=" guardar ">
</
form>
</
body>
</
html
No sé si todo esto ya lo tenías claro o no .. Usé un sólo script de proceso PHP y un par de templatese por qué el script de proceso que use bajo variables de control realizaba várias acciones .. Ahora, si tu tienes N scripts PHP de proceso y N plantillas que usar .. la técnica es la misma: proceso PHP que obtiene datos o los genera y -> se crea la plantilla ... Siempre es tu script PHP el que crea la plantilla ..

A su vez una plantilla podría ser más "reusable" si tuviese por ejemplo zonas que se repiten, ahí no sé como Smarty gestiona "bloques" para llamarlos cuando los necesites pero supongo que alguna manera tendrá de hacerlo y estará descrita en su documentación, pero esto sería lo ideal; imagina en mis ejemplos, siempre compongo una página (lease: la salida que genero en base al proceso PHP y el .tlp usado) repitiendo una y otra vez las mismas definiciones de cabeceras ..pié HTML y demás .. si eso lo gestionas como "bloques" podrías definir una plantilla "padre" (Con su cabecera, pie .. etc detalles) como "armazón" de la aplicación y tus otras situaciones de la lógica de tu aplicación serían la que le den valor a la generación del cierto bloque -sólo-. De esta forma es sencillo rehubicar modulos creados en alguna ocasión por qué cambiastes la forma en la que ahora se presentan (ej. tenías un bloque de noticas en tu pagina X a la derecha y ahora lo quieres a la izquierda .. o bajo cierta lógica (circunstancia) .. se ha de mostrar cierto bloque de información en la página no no ... pero todo lo demás ha de seguir intacto).

Un saludo,