Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] [DUDA] Smarty PHP

Estas en el tema de [DUDA] Smarty PHP en el foro de PHP en Foros del Web. Hola gente, espero esten bien. Estoy a punto de poner en practica el sistema de templates Smarty PHP pero antes queria que alguien que sepa ...
  #1 (permalink)  
Antiguo 04/05/2016, 18:54
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 7 meses
Puntos: 12
[DUDA] Smarty PHP

Hola gente, espero esten bien.

Estoy a punto de poner en practica el sistema de templates Smarty PHP pero antes queria que alguien que sepa me responda unas dudas...


Supongamos que yo tengo un archivo llamado menu.php que contiene lo siguiente:

Código PHP:
<?php
session_start
();
require(
'config.php');
AQUI UN WHILE PARA OBTENER DATOS...
if(
$_SESSION['usuario']){
Aqui todo lo que contiene el menu para usuarios conectados...
}else{
Aqui todo lo que contiene el menu para usuarios no conectados...
}
?>
Ahora bien, en una pagina ya sea el index.php u otra yo lo añado asi:
Código HTML:
<body>
<div id='top_menu'>
<?php include('menu.php'); ?>
</div>
</body> 
De esa manera me ahorraria tener que modificar 20 paginas en caso de agregar o eliminar un elemento del menu ya que solo deberia de modificar un archivo...

Si no me equivoco en smarty seria asi:
{if $sesion_usuario == true}
Aqui todo el html........
{else}
Aqui todo el html......
{/if}

Esto se me hace mas tedioso a la hora de tener que gregar o eliminar un elemento.

Ahora en caso de hacerlo asi:

Código PHP:
Ver original
  1. $menu_sesion_no = "
  2. <ul>
  3. <li><a class='item'>Item 1</a></li>
  4. <li><a class='item'>Item 2</a></li>
  5. <li><a class='item'>Item 3</a></li>
  6. </ul>";
  7. $menu_sesion_si = "
  8. <ul>
  9. <li><a class='item'>Item 1</a></li>
  10. <li><a class='item'>Item 2</a></li>
  11. <li><a class='item'>Item 3</a></li>
  12. </ul>";
  13. $smarty -> assign("$menu_sesion_no", $menu_sesion_no);
  14. $smarty -> assign("$menu_sesion_si", $menu_sesion_si);

Código HTML:
<body>
<div id='top_menu'>
{if $sesion_usuario == true}
{$menu_sesion_si}
{else}
{$menu_sesion_no}
{/if}
</div>
</body> 
Pero de esa manera seria mas tedioso para el diseñador, ya que a el no le interesa tener que lidiar con codigo de programacion....

Estas son las unicas formas de hacerlo que se me ocurren y me hace pensar que...

1- Smarty PHP no sirve para nada

o

2- Estoy usando mal Smarty PHP

Aclaro que en estos ejemplos no esta al 100% completo el code.... es solo un ejemplo para mostrar lo que quiero decir.

Espero me ayuden, gracias de antemano!
  #2 (permalink)  
Antiguo 04/05/2016, 19:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: [DUDA] Smarty PHP

Jamás he usado Smarty pero apuesto a que (2) lo estás usando mal.

Lo digo por una cosa muy básica: tu sintaxis.
Código PHP:
Ver original
  1. // MAL
  2. $smarty -> assign("$menu_sesion_si", $menu_sesion_si);
  3.  
  4. // BIEN
  5. $smarty -> assign("menu_sesion_si", $menu_sesion_si);

En tu código usas "$menu_sesion_si" como si ese fuera el nombre de la variable pero jamás funcionará, porque las comillas dobles ¡evalúan el contenido de la variable!

Eso ya lo deberías dominar, es manejo simple de variables y comillas, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/05/2016, 20:36
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 7 meses
Puntos: 12
Respuesta: [DUDA] Smarty PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Jamás he usado Smarty pero apuesto a que (2) lo estás usando mal.

Lo digo por una cosa muy básica: tu sintaxis.
Código PHP:
Ver original
  1. // MAL
  2. $smarty -> assign("$menu_sesion_si", $menu_sesion_si);
  3.  
  4. // BIEN
  5. $smarty -> assign("menu_sesion_si", $menu_sesion_si);

En tu código usas "$menu_sesion_si" como si ese fuera el nombre de la variable pero jamás funcionará, porque las comillas dobles ¡evalúan el contenido de la variable!

Eso ya lo deberías dominar, es manejo simple de variables y comillas, etc.
No importa la sintaxis, deja de lado eso.. olvidate de si el code esta bien escrito, mi punto es el siguiente:

Asi es como yo incluyo un menu en mi website, y en caso de querer añadir o eliminar un item, solo necesitaria modificar 1 archivo.
Código PHP:
Ver original
  1. <?php
  2. require('config.php');
  3. AQUI UN WHILE PARA OBTENER DATOS...
  4. if($_SESSION['usuario']){
  5. Aqui todo lo que contiene el menu para usuarios conectados...
  6. }else{
  7. Aqui todo lo que contiene el menu para usuarios no conectados...
  8. }
  9. ?>


Asi seria en smarty php, y aqui seria mas molesto tener que añadir o eliminar un item del menu, ya que tendriamos que hacerlo con todas las paginas de la que conste nuestra website:
Código PHP:
Ver original
  1. {if $sesion_usuario == true}
  2. <ul>
  3. <li><a class='item'>Item 1</a></li>
  4. <li><a class='item'>Item 2</a></li>
  5. <li><a class='item'>Item 3</a></li>
  6. </ul>";
  7. {else}
  8. <ul>
  9. <li><a class='item'>Item 1</a></li>
  10. <li><a class='item'>Item 2</a></li>
  11. <li><a class='item'>Item 3</a></li>
  12. </ul>";
  13. {/if}

Ahora bien, asi tendriamos que hacerlo en smarty para que pueda modificarse solo 1 archivo y que se note en todas las paginas, pero aqui esta la contradiccion de la finalidad, seprar el diseño de la programacion.....
Código PHP:
Ver original
  1. $menu_sesion_no = "
  2.    <ul>
  3.    <li><a class='item'>Item 1</a></li>
  4.    <li><a class='item'>Item 2</a></li>
  5.    <li><a class='item'>Item 3</a></li>
  6.    </ul>";
  7.     $menu_sesion_si = "
  8.    <ul>
  9.    <li><a class='item'>Item 1</a></li>
  10.    <li><a class='item'>Item 2</a></li>
  11.    <li><a class='item'>Item 3</a></li>
  12.    </ul>";
  13.     $smarty -> assign("menu_sesion_no", $menu_sesion_no);
  14.     $smarty -> assign("menu_sesion_si", $menu_sesion_si);
  15.  
  16. <body>
  17. <div id='top_menu'>
  18. {if $sesion_usuario == true}
  19. {$menu_sesion_si}
  20. {else}
  21. {$menu_sesion_no}
  22. {/if}
  23. </div>
  24. </body>

Y ese es mi punto..
como conseguir crear un menu que en caso de añadir o eliminar un elemento se note en todas las paginas, pero que a su vez no este mezclado el disño html/css con el codigo de programacion.

Porque las maneras que se me ocurren solo me dan cotradiccion a su finalidad, es decir, que siempre termino mezclando alguna etiqueta en codigo php, que no deveria de pasar.
  #4 (permalink)  
Antiguo 04/05/2016, 20:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: [DUDA] Smarty PHP

Cita:
como conseguir crear un menu que en caso de añadir o eliminar un elemento se note en todas las paginas, pero que a su vez no este mezclado el disño html/css con el codigo de programacion.
Fácil: estructuras de datos simples.

Mientras sigas escribiendo dichos enlaces a mano jamás te librarás del problema, no importando qué tecnología quieras usar.

Si separas y abstraes dicha información en arreglos sencillos, objetos, etc. podrás entonces crear funciones simples para crear lo que desees, y si modificas algo será únicamente en el lugar donde tengas dichos datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/05/2016, 22:08
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 7 meses
Puntos: 12
Respuesta: [DUDA] Smarty PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Jamás he usado Smarty pero apuesto a que (2) lo estás usando mal.

Lo digo por una cosa muy básica: tu sintaxis.
Código PHP:
Ver original
  1. // MAL
  2. $smarty -> assign("$menu_sesion_si", $menu_sesion_si);
  3.  
  4. // BIEN
  5. $smarty -> assign("menu_sesion_si", $menu_sesion_si);

En tu código usas "$menu_sesion_si" como si ese fuera el nombre de la variable pero jamás funcionará, porque las comillas dobles ¡evalúan el contenido de la variable!

Eso ya lo deberías dominar, es manejo simple de variables y comillas, etc.
Bueno, parece convincente, me pondre en practica ya que al parecer me vere forzado a aprender php poo si o si .....

gracias por responder! :)
  #6 (permalink)  
Antiguo 04/05/2016, 23:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: [DUDA] Smarty PHP

No estás forzado a usar OOP únicamente.

PHP es un lenguaje dinámico y multi paradigma, podrías hacer todo con funciones, o incluso sólo variables (lambdas).

Desde luego también puedes usar objetos, pero no necesariamente necesitas clases (tus propios objetos) para poder interactuar con ellos.

Muchas funciones en PHP también devuelven objetos, es muy trivial incluso convertir un arreglo a un objeto.

En fin, no es buena idea que limites tu capacidad de aprendizaje a un sólo paradigma.

Saludos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: html, smarty, usuarios
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 08:18.