Foros del Web » Programando para Internet » PHP »

Smarty, ayuda!

Estas en el tema de Smarty, ayuda! en el foro de PHP en Foros del Web. Hola, bueno denuevo yo por aqui en el foro con un tema especifico. NO ENtiendo SMARTY. y cual es el problema??? diran. Bueno tengo que ...
  #1 (permalink)  
Antiguo 30/11/2005, 16:57
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 20 años, 9 meses
Puntos: 0
Smarty, ayuda!

Hola, bueno denuevo yo por aqui en el foro con un tema especifico. NO ENtiendo SMARTY.

y cual es el problema??? diran.

Bueno tengo que hacer un desarrollo basado en smarty (es requerimiento) y no encuentro mucha informacion al respecto.
Por favor no respondan con links a tutoriales de smarty ya que este no es el problema.
La sintaxis de smarty la entiendo a la perfeccion y por probar pude realizar muchas cosas con sus filtros, modificadores y funciones. Es otro lenguaje mas.
El problema es que siempre y en todos los casos es sobre un solo script y un solo template.

COMO HAGO UN ABM!!!!!! como paso distintas variables por los formularios, validarlos , capturarlos, guardarlos en un base de datos??? . como uso smarty para un sitio que necesita varios formularios y no se mueve con simples links

Bien, mejor me calmo y sere un poco mas explicito .

Quien captura las varibles de los formularios, el archivo php propiamente dicho o el archivo de los templates????.
entonces si tengo un template con un form. como hago para capturar las variables del form y actuar en funcion de esta informacion???.
bueno no se si el problema soy yo pero me arte de googlear horas y solo encontrar simples ( o muy complejos) ejemplos de como usar las cosas en una sola pagina.
espero que me puedan iluminar

Última edición por chr_c; 30/11/2005 a las 17:13
  #2 (permalink)  
Antiguo 30/11/2005, 17:09
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 1 mes
Puntos: 1
Intentastes en la pagina oficial de smarty http://smarty.php.net/docs.php, digo pues, pero eso si tienes que leer mucho y antes que nada tener conocimientos previos sobre HTML y PHP.
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #3 (permalink)  
Antiguo 30/11/2005, 17:12
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por tu tiempo, pero como aclare antes los link sobre que es smarty estan mas super leidos. y ni siquiera en la documentacion oficial me clarifica lo que pregunto.
  #4 (permalink)  
Antiguo 30/11/2005, 20:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 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,
  #5 (permalink)  
Antiguo 30/11/2005, 20:40
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 20 años, 9 meses
Puntos: 0
Cluster, yo particularmente no soy amante de las plantillas, pero no es un requerimiento que pueda cambiar, por eso la insistencia.
Ahora bien, segun la logica que vos me explicas (con mucho detalle por cierto), es lo que a mi se me ocurrio en un principio. Pero no me resulta del todo logico que tooooodo el desarrollo del sitio este en funcion del index.php, si bien puedo invocar o incluir o redireccionar a otro script y de ahi llamar a una nueva plantilla no me termina de convencer.
No es que tu explicacion no me convenza, sino que es en mayor o menor medida, a la misma que yo tenia en mente. Solo que esto no me parece lo mas "logico" o mejor dicho productivo. ya que si tengo un desarrollo importante el index.php sera bastante confuso.
Por otro lado si esta forma de trabajo es la correcta , lo unico que hace la plantilla es complicar la programacion en funcion de simplificar el diseño.

Cuando en el ejemplo anterior me referia a
"Cita:
como uso smarty para un sitio que necesita varios formularios y no se mueve con simples links "

es que si en la plantilla tengo un link <a href="seccion1.php">ir</a> dentro del script seccion1.php puedo manejar a mi antojo las plantillas en forma independiente del index.php. pero que pasa con los forms????
bueno empezare a ver si esta logica (la que planteas y la que yo inicial crei erronea) es la correcta.


y el ultimo punto que no entendiste, es simplemente que todos los ejemplos (incluida la propia documentacion de smarty) hay 1 solo script de php, 1 template y generan solo 1 pagina.
bueno gracias cluster, y espero a ver si alguien mas quiere aportar algo.
con respecto al otro post, borralo, me excedi de ansioso.
  #6 (permalink)  
Antiguo 30/11/2005, 21:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Pero no me resulta del todo logico que tooooodo el desarrollo del sitio este en funcion del index.php, si bien puedo invocar o incluir o redireccionar a otro script y de ahi llamar a una nueva plantilla no me termina de convencer.
Era un simple ejemplo. Es una técnica más, de hecho no es directamente dependiente de que uses o no un motor de gestión de plantillas.

Cita:
Por otro lado si esta forma de trabajo es la correcta
Como ya te he comentado .. es una técnica en general de desarrollo .. pero no la única ni la mas adecuada para todos los casos. De hecho tu puedes aplicar esa técnica de "1 script PHP que gestione varias acciones" a areas concretas . .por ejemplo el micro-ABM para administrar "usuarios" .. algo simple que tengas unas cuantas acciones que realizar, pero no para manejar un enorme script que gestione TODO la aplicación.

Cita:
lo unico que hace la plantilla es complicar la programacion en funcion de simplificar el diseño.
Pues si, .. complica un poco la programación. Pero un sistema de gestión de plantillas ofrece otras ventajas:

* Separas completamente el código del diseño:
- Puedes trabajar prácticamente en paralelo con un equipo de diseño.
- El diseñador puede hacer várias propuestas del diseño sin que el programador intervenga.
* Nadie te tocará tu código PHP para hacer un cambio en el diseño ni el diseñador tendrá que saber -nada- de programación para alterar el diseño.

Como comentario .. por mi parte trabajo con otros motores de gestión de templates (más simples para mi cometido). Los uso preferentemente para generación de informes, comprobanes, contratos .. etc que son con diseño "base" tipo plantilla. De esta forma siempre acuerdo los datos "dinámicos" que esa plantilla a generar pueden intervenir, los cambios los realiza personal no "programador" sin temor por mi parte a que toque donde no debe. Y cuando les dá por cambiar el diseño .. ni me entero (salvo cuando desean aportar más datos dinámicos, claro).

Cita:
es que si en la plantilla tengo un link <a href="seccion1.php">ir</a> dentro del script seccion1.php puedo manejar a mi antojo las plantillas en forma independiente del index.php. pero que pasa con los forms????
bueno empezare a ver si esta logica (la que planteas y la que yo inicial crei erronea) es la correcta.
El trasnfondo del uso de plantillas es que es el script PHP el que va a generar tu página en función de su plantilla (tan compleja como sea esta) y de la lógica del código PHP que emples que podrá generar totalmente dinámicamente esa página cntrolando como usa la plantilla.

El tema de los "foms" .. no sé que problema tienes ahí .. Tu "form" lo debes crear como una plantilla más .. tienes que tener un script PHP que genere esa "pagina" en función de esa plantilla (mi ejemplo del case "nuevo" y/o "editar" gestionan un formulario). El script PHP puede ser uno indiviual o uno que gestione varias alternativas .. Si te fijas en lo que realmente se base un "switch" aplicado a un concepto de web "modular" (que es como le llaman a este tipo de aplicacones que todo pasa por un sólo script) al final .. se desglosan y se trabajan de forma independiente como si tuvieses N scripts de proceso separados.

Por otro lado un "form" lo que hace en el fondo es enviar los datos que se recolecten en el a un script PHP de proceso (en nuestro caso) .. No sé que tipo de proceso realizaras .. pero tendras caso en que envie la información a cierto scirpt (por su "action=scriptphpdeproceso.php") .. y este simplemente procese y luego redirecione a otro script PHP que este generará su página en función de una plantilla dada. En otros casos el mismo scirpt de proceso, tendrá que generar una página en función de otra plantilla dada. Todo es lo mas de lo mismo ("case" "editar" de mi anterior ejemplo, pero como script individual).

Un saludo,
  #7 (permalink)  
Antiguo 01/12/2005, 09:29
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 20 años, 9 meses
Puntos: 0
Cluster, bueno estuve aplicando un poco todo esto que hablamos y realmente es asi. Si bien hay distintas formas de aplicarlos. por lo menos el funcionamiento "logico" esta bastante claro.

Si bien yo encare mal la situacion desde un principio, creo que resulto mas facil realizar las preguntas de esta forma que preguntar en base a la realidad.

Muchas gracias como siempre.

Ahora bien... esto es para el que lea este post y le pueda llegar a ser util.
Mi problema inicial es que necesito desarrollar un modulo de xoops ya que la intranet del cliente esta basada en xoops. Como en xoops no encontre mucha informacion concreta mas que como armar un modulo, rapidamente me di cuenta que mi problema es la falta de comprension del motor de plantillas Smarty (que es el que utiliza xoops). Siguiendo la logica de todo el desarrollo y de los ejemplos de los modulos, me di cuenta facilmente que no es complicado realizar modulos ya que es cuestion de seguir los paramentros principales del proyecto. Pero el principal problema era la utilizacion de plantillas, ya que si bien no es un requisito de xoops el utilizar plantillas, sí es un requisito de mi cliente para poder designar el look & feel del modulo a la gente de diseño.
En definitiva este post les puede servir bastante para encontrar la logica a como trabaja smarty y como aplicar el manejo de templates en cualquier cms que lo utilice. Es bueno entender primero como funciona el motor de plantillas ya que este es el principal problema.

Bueno nuevamente gracias.
  #8 (permalink)  
Antiguo 24/01/2006, 20:12
Avatar de santidc  
Fecha de Ingreso: enero-2005
Mensajes: 88
Antigüedad: 19 años, 2 meses
Puntos: 1
Bueno a ver si te puedo dar una mano

yo tengo dos dias trabajando para una empres que no puedo mensionar la cual trabaja todo sobre smarty y si realmente es un quilombo smarty pero bue es muy bueno para separa la parte de la logica con la de diseño, como decia no se quien por ahi arriba.

El tema es que segun estoy aprendiendo en un sitio en php primero tenes los archivos de php, despues la parte grafica se arma con smarty para vos al final ver una simple pagina html con extension php.

si tenes un form por ejemplo ese form esta echo en smarty y manda variables por metodo post o get a otra pagina .php, esa pagina toma los datos, consulta a la base de datos por sus propios medios o instancia objetos que a su ves preguntan a la DB y al terminar las variables de php finales son asignadas a variables smarty. ahi arriba vi algo de codigo de este amigo cluster en donde solo esta mandandote a una plantilla o la otra pero seguro en y en casi 99% tenes que mandar datos osea variables bueno para que vos veas la pagina php le pasa las variables a smarty por medio de un comando de smarty que se llama asign y si luego abajo le mandar el tpl y cuando el tpl agarra el el control se encuentra con variables smaty y las escribe de esta forma por ejemplo

si tubieras en php miObjeto->resultado(); en smary es {miObjeto.resultado}

bueno eso es mas o menos como es la metodologia, fijate si te aclar algo de lo tuyo, un saludo grande

SantiDC
__________________
SantiDC
-------------------------------------
www.pedilo.com
un mundo de publicaciones gratis
  #9 (permalink)  
Antiguo 24/01/2006, 20:33
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 8 meses
Puntos: 1
amigo si estas trabajando en base a xoops no se si hayas visto www.Drclone.net ,gracias a Dios cuando implemente una aplicacion para xoops no necesite el uso de smarty pero si deseo aprenderlo al maximo. Espero no cambien el diseño de la web para la que lo hice en muchooo tiempo XD
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 03:56.