Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/05/2016, 20:36
TrinityCore
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 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.