Smarty Manual Es 2.6

Embed Size (px)

Citation preview

  • 5/20/2018 Smarty Manual Es 2.6

    1/244

    Smarty Manual

    Monte Ohrt Andrei Zmievski

    Mario Ramrez

  • 5/20/2018 Smarty Manual Es 2.6

    2/244

    Smarty - El motor compilador de Plantillas para PHPby Monte Ohrt and Andrei Zmievski by Mario Ramrez

    Publication date 2010-09-20Copyright 2001-2005 New Digital Group, Inc.

  • 5/20/2018 Smarty Manual Es 2.6

    3/244iii

    Table of ContentsPrlogo ............ ........................................................ ....................................................... xiiI. Iniciando .................................................. ........................................................ .............. 1

    1. Que es Smarty? ................................. ....................................................... .............. 32. Instalacin ..................................................... ........................................................ 5

    Requerimentos ...................................................................... ............................. 5Instalacin Bsica ............................................................................................... 5Expandiendo la configuracin ............................................................................... 9

    II. Smarty For Template Designers .................................................... .................................. 123. Basic Syntax ...................................................................... .................................. 15

    Comentarios ..................................................................................................... 15Variables ......................................................................................................... 15Funciones .................................................................... .................................... 16Atributos ......................................................................... ................................ 17Colocando variables entre comillas dobles ............................................................. 17Matemticas ..................................................................................................... 18Escaping Smarty Parsing .................................................................................... 18

    4. Variables ............................................................................... .............................. 20Variables definidas desde PHP ............................................................................ 20

    Arreglos asociativos ............................................................ ...................... 21ndices de Matrices ............................................................ ....................... 22Objects .................................................................................................... 23

    Variables cargadas desde archivos de configuracin ..... ...... ...... ..... ...... ..... ...... ...... ... 24La variable reservada {$smarty} .......................................................................... 26

    Solicitud de Variables ................................................................................ 26{$smarty.now} ................................................................................ ......... 26{$smarty.const} ........................................................................................ 27{$smarty.capture} ..................................................................................... 27{$smarty.config} ....................................................................................... 27{$smarty.section}, {$smarty.foreach} .................................................... ....... 27

    {$smarty.template} .................................................................................... 27{$smarty.version} .......................................................................... ........... 27{$smarty.ldelim},{$smarty.rdelim} .. .. ..................................................... .... 27

    5. Modificadores de variables ..................................................................................... 28capitalize ......................................................................................................... 29cat .................................................................................................................. 29count_characters ........................................................................................... .... 30count_paragraphs ...................................................................................... ........ 31count_sentences ................................................................................................ 32count_words ..................................................................................................... 33date_format ...................................................................................................... 34default . ..... ...... .......................................................................... ...................... 37escape ..... ...... .................................................................................................. 38

    indent ...... ...... .................................................................... ............................. 39lower .................................................................................... .......................... 41nl2br ............................................................................................................... 41regex_replace . .. .................................................................. .............................. 42replace ............................................................................ ................................ 43spacify .............................................................................................. .............. 44string_format .................................................................................................... 45strip ................................................................................................................ 46strip_tags ......................................................................................................... 47

  • 5/20/2018 Smarty Manual Es 2.6

    4/244

    Smarty Manual

    iv

    truncate ..................................................... ...................................................... 48upper ............................................................................................. ................. 50wordwrap ............................................................................... ......................... 51

    6. Combinando Modificadores ..................................................................................... 537. Funciones Integradas ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... .... 54

    capture ............................. ........................................................ ....................... 54

    config_load ...................................................................................................... 55{foreach},{foreachelse} ..................................................................... ................ 58iteration ................................................................................................... 61first ........................................................................... ............................. 61last .................................................................... ..................................... 61show ....................................................................................................... 61total ........................................................................................................ 61

    include ............................................................................................................ 62{include_php} ........................................................................ .......................... 64insert ....... ..... ................................................................................. ................. 65if,elseif,else ...................................................................................................... 66{ldelim},{rdelim} ...................................................................... ....................... 69literal ...... ..... ................................................................................................... 69

    {php} .............................................................................................................. 70section,sectionelse ............................................................................................. 71

    index ................................................................... ................................... 78index_prev ............................................................................................... 79index_next ............................................................................................... 79iteration ................................................................................................... 80first ........................................................................... ............................. 82last .............................................................................. ........................... 82rownum ................................................................................................... 82loop ........................................................................................................ 82show ....................................................................................................... 83total ........................................................................................................ 84

    {strip} ............................................................................................................. 858. Custom Functions .................................................................................................. 87

    {assign} ..... ...... ...... ........................................................... .............................. 87{counter} ..... ...... ..... ......................................................................................... 88cycle ............................................................................................................... 89{debug} ...................................................................................... .................... 91{eval} ............................................................................................................. 91{fetch} ............................................................................................................ 93{html_checkboxes} ......................................................................... .................. 94{html_image} . .. ................................................................................................ 96{html_options} ................................................................................................. 97{html_radios} . .. ................................................................................. ............. 100{html_select_date} .................................................................... ...................... 103

    {html_select_time} ........................................................ .................................. 108{html_table} ................................................................................................... 112math ............................................................................... .............................. 114{mailto} .... ...... ..... ............................................................. ............................ 117{popup_init} ....................................................................... ........................... 118popup ............................................................................................................ 119{textformat} .......................................................................... ......................... 124

    9. Config Files ........................................................................................................ 12810. Debugging Console ................................................................................ ............ 130

    III. Smarty For Programmers ............................................................................................. 131

  • 5/20/2018 Smarty Manual Es 2.6

    5/244

    Smarty Manual

    v

    11. Constantes ............ ........................................................ .................................... 135SMARTY_DIR ................................................. .............................................. 135SMARTY_CORE_DIR ..................................................... ............................... 135

    12. Clase Variables de Smarty ................................................................................... 136$template_dir ................................................... ............................................... 136$compile_dir ...................................................... ............................................ 136

    $config_dir ..................................................................................................... 136$plugins_dir .................................................................. ................................. 136$debugging ....................................................................... ............................. 137$debug_tpl .......................................................................... ........................... 137$debugging_ctrl ........................................................................... ................... 137$autoload_filters .............................................................................................. 137$compile_check .................................................................. ............................ 138$force_compile ...................................................................... ......................... 138$caching ...................................................................................... .................. 138$cache_dir ... ... ................................................................................ ............... 138$cache_lifetime ............................................................................................... 139$cache_handler_func ........................................................................................ 139$cache_modified_check .... ..... ........................................................................... 139

    $config_overwrite ............................................................................................ 139$config_booleanize .......................................................................................... 140$config_read_hidden .... .................................................................................... 140$config_fix_newlines ........................................................................... ............ 140$default_template_handler_func ......................................................................... 140$php_handling ......................................................................... ....................... 141$security ........................................................................................................ 141$secure_dir ..................................................................................................... 141$security_settings ........................................................................... ................. 141$trusted_dir ............................................................................... ..................... 142$left_delimiter .......................................................................... ...................... 142$right_delimiter ........................................................................... ................... 142$compiler_class ................................................................... ........................... 142$request_vars_order .......................................................................... ............... 142$request_use_auto_globals ........................................................ ........................ 142$error_reporting .................................................................. ............................ 143$compile_id ............................................................................ ....................... 143$use_sub_dirs . .. ............................................................................................ .. 143$default_modifiers ........................................................................................... 144$default_resource_type ..................................................................................... 144

    13. La clase Methods() de Smarty .............................................................................. 145append() ....................................................................................... ................. 146append_by_ref ................................................................................... ............. 147assign() .......................................................................................................... 148assign_by_ref . .. ........................................................................... ................... 149

    clear_all_assign() ..................................................................... ....................... 150clear_all_cache ............................................................... ................................ 151clear_assign() ............................................................................... .................. 152clear_cache() .......................................................................... ........................ 153clear_compiled_tpl() ...................................................................... .................. 154clear_config() ............................................................................... .................. 155config_load() ........................................................................ .......................... 156display() ............................................................................. ........................... 157fetch() ...... ...... .................................................................... ........................... 159get_config_vars() ..................................................................... ....................... 162

  • 5/20/2018 Smarty Manual Es 2.6

    6/244

    Smarty Manual

    vi

    get_registered_object() ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... . 163get_template_vars() .......................................................................................... 164is_cached() ....................................................... .............................................. 165load_filter() .................................................... ................................................ 167register_block() ............................................................................................... 168register_compiler_function ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... .. 169

    register_function() .................................................................................. ......... 170register_modifier() ........................................................................................... 172register_object() .................................................................. ............................ 173register_outputfilter() ......................................................... .............................. 174register_postfilter() ..................................................................... ..................... 175register_prefilter() ............................................................................................ 176register_resource ................................................................................. ............ 177trigger_error ............................................................................ ....................... 178template_exists() ....................................................................... ...................... 179unregister_block .............................................................................................. 180unregister_compiler_function() .............................................................. ............ 181unregister_function() ........................................................................................ 182unregister_modifier() .. ...................................................................................... 183

    unregister_object() ........................................................................................... 184unregister_outputfilter() .................................................................................... 185unregister_postfilter() ....................................................................................... 186unregister_prefilter() ........................................................................................ 187unregister_resource() ........................................................................................ 188

    14. Cache ................................................................................ .............................. 189Configurando el Cache ..................................................................................... 189Multiples caches por pagina .............................................................................. 192Cache Groups ................................................................................................. 193Controlando salida de Cacheabilidad de plugins ........ ..... ...... ...... ..... ...... ..... ...... ..... 194

    15. Caracteristicas Avanzadas .................................................................................... 197Objetos .......................................................................................................... 197Prefilters ........................................................................................................ 198Postfilters ....................................................................................................... 199Filtros de salida ............................................................................................. . 200Funcin manipuladora de cache .......................................................... ............... 200Recursos ........................................................................................................ 202

    Templates desde $template_dir ..................................................... ............. 202Templates partiendo de cualquier directorio ................................................. 202Templates partiendo de otras fuentes ............................................... ........... 203Funcin manipuladora de Templatepor default ............................................. 205

    16. Extendiendo Smartycon plugins ........................................................................... 206Como funcionan los Plugins .............................................................................. 206Nombres convencionales ... ...... ..... ................................................... ................. 206Escribiendo Plugins ...................................................................................... ... 207

    Funciones de Template ..................................................................................... 207Modificadores ................................................................................................. 209Block Functions .............................................................................................. 211Funciones Compiladoras ................................................................................... 212Prefiltros/Postfiltros ........................................................................ ................. 213Filtros de Salida .............................................................................................. 215Fuentes .......................................................................................................... 216Inserts ...... ...... ............................................................................. .................. 219

    IV. Appendixes ............................................................................................................... 22017. Localizacin de Errores ....................................................................................... 222

  • 5/20/2018 Smarty Manual Es 2.6

    7/244

    Smarty Manual

    vii

    Errores Smarty/PHP ......................................................................................... 22218. Consejos y Trucos .................................. ....................................................... .... 224

    Manipulacin de Variables Vacias ........ ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... 224Manipulacin del valor default de una variable ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 224Pasando la variable titulo a la cabecera del template ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 225Fechas ............................................................ ............................................... 226

    WAP/WML .................................................. .................................................. 227Templates con Componetes ............................................................................... 229Ofuscando direcciones de E-mail ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... .... 230

    19. Fuentes ......................................................................... ................................... 23120. ERRORES . ........................................................ ............................................... 232

  • 5/20/2018 Smarty Manual Es 2.6

    8/244viii

    List of Examples2.1. Archivos de la libreria Smarty ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ..... ...... ..... ...... ..... . 52.2. Creando una instancia Smarty de Smarty .......... ..... ...... ..... ..... ...... ..... ...... ..... ...... ...... ..... .... 52.3. Reemplazar por la ruta absulta de la libreria del archivo ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 62.4. Adicionar el directorio de la libreria para incluirlo en el include_path de PHP .. .. .. .. .. .. .. .. .. .. .. .. .. 6

    2.5. Defina la constante SMARTY_DIR manualmente .............................................................. 62.6. Ejemplo de estrutura de archivo ...................................................................................... 72.7. Configurandopermisos de archivos ..................................................................... ............ 82.8. Editando /web/www.example.com/smarty/guestbook/templates/index.tpl . ... ... ... ... ... ... ... ... ... ... .. 82.9. Editando /web/www.example.com/docs/guestbook/index.php ................................................ 92.10. Editando /php/includes/guestbook/setup.php ..... ...... ..... ...... ..... ..... ...... ..... ...... ..... ...... ...... . 102.11. Editando /web/www.example.com/docs/guestbook/index.php ............................................. 113.1. Comentarios ............................................................................................................... 153.2. Variables ................................................................................................................... 163.3. Sintaxis de Funciones .................................................................................................. 163.4. Sintaxis de atributos de Funciones ...................................................................... ........... 173.5. Sintaxis entre comillas ................................................................................................. 183.6. Ejemplos de matemticas ................................................... .......................................... 183.7. Ejemplo cambiando delimitadores ....................................................... ........................... 194.1. variables definidas .......................................................... ............................................ 214.2. Accesando variables de matriz asociativa ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... 224.3. Accesando matrices por sus ndices .................................................... ............................ 234.4. Accesando propiedades de los Objetos ............ ........................................................ ........ 244.5. Variables de configuracin .. ........................................................ ................................. 254.6. Mostrando solicitud de variables ........................................................ ........................... 264.7. Usando {$smarty.now} ................................................................................................ 274.8. Usando {$smarty.const} ............................................................................................... 275.1. Ejemplo de modificador ............................................................................................... 285.2. capitalize ................................................................................................................... 295.3. cat ..... ...... ................................................................................................................. 30

    5.4. count_characters .................................................................................. ....................... 315.5. count_paragraphs ........................................................................................................ 325.6. count_sentences .......... ................................................................................................ 335.7. count_words ................................................................................................... ........... 345.8. date_format ................................................................................................................ 355.9. default ..................................................................................................................... . 375.10. escape ..................................................................................................................... 385.11. indent ...................................................................................................................... 405.12. lower ........................................................................................................... ........... 415.13. nl2br ....................................................................................................................... 425.14. regex_replace .......................................................................................... ................. 435.15. replace ............................................................................................................... ..... 445.16. spacify ........................................................................................... ......................... 45

    5.17. string_format ............................................................................................................ 465.18. strip ........................................................................................................................ 475.19. strip_tags ................................................................................................................. 485.20. truncate ................................................................................................................... 505.21. upper ...................................................................................................................... 515.22. wordwrap .......................................................................................................... . . .. . . 526.1. Combinando Modificadores ... ..... ...... ...... ..... ...... ......................................................... .. 537.1. capturando contenido de template .......................................................................... ........ 557.2. Funcin {config_load} ................................................. ................................................ 57

  • 5/20/2018 Smarty Manual Es 2.6

    9/244

    Smarty Manual

    ix

    7.3. Funcin config_load con section ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... 587.4. foreach ............. ........................................................ ................................................. 597.5. foreach key ............................ ........................................................ ............................ 607.6. Ejemplo de {foreach} - con base de datos (eg PEAR o ADODB) ...... ... ... ... ... ... ... ... ... ... ... ... .. 617.7. funcion {include} .................................................. ..................................................... 627.8. Funcin {include} pasando variables ......... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ..... ... 63

    7.9. {include} y asignacion de variables ............................................................ ................... 637.10. Ejemplos derecursos para la funcin include ........................ ......................................... 647.11. funcion {include_php} ............................................................................................... 657.12. funcin {insert} ...................................................................... .................................. 667.13. sentencia if ...................................................................... ........................................ 687.14. {ldelim}, {rdelim} .... ...... ......................................................... ................................. 697.15. Etiqueta literal .......................................................................................................... 707.16. Etiqueta {php} .......................................................................................................... 707.17. section .................................................................................. .................................. 737.18. loop(ciclo) de la variable section .................................................................................. 747.19. Nombres desection ................................................................................................... 757.20. sections anidadas ............................................................................ .......................... 767.21. sections y matrices asociativas ..................................................................................... 77

    7.22. {sectionelse} .......................................................................................... .................. 787.23. {section} propiedades del index ................................................................................... 787.24. {section} propiedades del index_next y index_prev ......................................................... 807.25. {section} propiedades de iteration ................................................... ............................. 817.26. {section} propiedades first y last ............................................................. .................... 827.27. {section} propiedades de index .................................................................................... 837.28. section atributos de show .................................................................... ....................... 847.29. {section} propiedadesde total ................................................................... .................. 857.30. {strip} tags .................................................................... .......................................... 868.1. {assign} ...................................................................... .............................................. 878.2. Accesando variables desde un script de PHP. {assign} ....... ...... ..... ...... ..... ...... ...... ..... ...... ... 888.3. counter ...................................................................................................................... 898.4. cycle .............................................................................. .......................................... 918.5. {eval} ....................................................................................................................... 928.6. fetch ......................................................................................................................... 938.7. {html_checkboxes} ..................................................................................... ................ 958.8. ejemplo de base de datos (eg PEAR o ADODB): ............................................................. 968.9. html_image example ............................................................................................... .... 978.10. {html_options} .............. ................................................................................... ........ 998.11. {html_options} - Ejemplo con base de datos (eg PEAR o ADODB): ................................. 1008.12. {html_radios} : Ejemplo 1 .................................................................................. ...... 1018.13. {html_radios} : Ejemplo 2 ...................................................... .................................. 1028.14. {html_radios}- Ejemplo con base de Datos (eg PEAR o ADODB): ..... ..... ...... ..... ...... ..... ... 1038.15. {html_select_date} ................................................................................................... 1078.16. {html_select_date} ................................................................................................... 108

    8.17. {html_select_time} .......................................................................................... ........ 1118.18. html_table ................................................................... ........................................... 1148.19. {math} .......................................................................................... ........................ 1168.20. {mailto} ................................................................................................................. 1188.21. popup_init .............................................................................................................. 1198.22. popup .................................................................................................................... 1248.23. {textformat} ........................................................................... ................................ 1269.1. Ejemplo de sintaxis de un archivo de configuracin ......................................................... 12811.1. SMARTY_DIR .................................. ..................................................................... 13511.2. SMARTY_CORE_DIR ............................................................................................. 135

  • 5/20/2018 Smarty Manual Es 2.6

    10/244

    Smarty Manual

    x

    12.1. multiple $plugins_dir ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ..... ...... . 13712.2. Arreglo de variables de configuracin .... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... .. 14012.3. $compile_id .................................................. ....................................................... ... 14313.1. append ......... ........................................................ .................................................. 14613.2. append_by_ref ................................................. ....................................................... 14713.3. assign() .................................................... ........................................................ ...... 148

    13.4. assign_by_ref() ........ .................................................................................... ........... 14913.5. clear_all_assign() ....................................................... .............................................. 15013.6. clear_all_cache .......... .............................................................................................. 15113.7. clear_assign() .......................................................................................................... 15213.8. clear_cache() .......................................................................................................... 15313.9. clear_compiled_tpl() ................................................................................................ 15413.10. clear_config() ...................................... .................................................................. 15513.11. config_load() ..................... .................................................................................... 15613.12. display() ............................................................................................................... 15713.13. Ejemplos de recursos de la funcin display ................................................................. 15813.14. fetch() .................................................................................................................. 16013.15. Usando fetch() y enviando a un e-mail ...... ...... ...... ..... ...... ..... ...... ...... ........................ 16113.16. get_config_vars() ................................................. .................................................. 162

    13.17. get_registered_object() ............................................................................................ 16313.18. get_template_vars ........................................................ .......................................... 16413.19. is_cached() ......................................................................................................... .. 16513.20. is_cached() con templates con multiple-cache ............................................................ . 16513.21. loading filter plugins ...... ..... ...... ........................................................... .................. 16713.22. register_block() ............................................................................ ......................... 16813.23. register_function() .................................................................................................. 17013.24. register_modifier() ................................................................................................. 17213.25. register_resource .................................................................................................... 17713.26. template_exists() .................................................................................................... 17913.27. unregister_function() .... ..... ...... ...... ........................................................... .............. 18213.28. unregister_modifier() .. ..... ...... ..... ............................................................. ............... 18313.29. unregister_resource() ....................................................................... ....................... 18814.1. Habilitando Cache ......................................................................... .......................... 18914.2. Configurando cache_lifetime por cache ...................................................... ................. 19014.3. Habilitando $compile_check ... ... ... ............................................................................. 19014.4. Usando is_cached() .................................................................................................. 19114.5. Limpiando el cache .................................................................................................. 19114.6. Pasando un cache_id para display() ............................................................................ 19214.7. Pasando un cache_id para is_cached() .... ........................................................ ............. 19314.8. Limpando todos los caches para un cache_id en particular .......... ..... ..... ...... ..... ...... ..... ..... 19314.9. Grupos de cache_id .................................................................................... ............. 19414.10. Previniendo que una sada de plugin de ser cacheada .................................................... 19514.11. Previniendo una pasada entera del template para el cache .............................................. 19615.1. usando un objeto registrado o atribuido .............. ........................................................ . 198

    15.2. usando un prefiltro prefilter de template ...................................................................... 19915.3. Usando un postfilter de template ...................................................... .......................... 19915.4. Usando un filtro de salida de template ............................ ............................................. 20015.5. ejemplo usando MySQL como una fuente de cache ...... ..... ..... ...... ..... ...... ..... ...... ...... ..... 20115.6. Usando templates desde $template_dir ...................................................... .................. 20215.7. usando templates desde cualquier directorio .................................. ............................... 20215.8. usando templates con rutas de archivos de windows ....................................................... 20315.9. Usando recursos habituales ...................................................... ................................. 20415.10. usando la funcin manipuladora de template por default .......... ..... ...... ..... ...... ..... ...... ..... 20516.1. Funcin de plugin con salida ......................................................... ............................ 208

  • 5/20/2018 Smarty Manual Es 2.6

    11/244

    Smarty Manual

    xi

    16.2. Funcin de plugin sin salida ...................................................................................... 20916.3. Plugin modificador simple ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... .... 21016.4. Plugin modificador mas complejo ..... ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... .. 21116.5. Funcin de bloque ................................................................................................... 21216.6. Funcin compiladora simple ...................................................................................... 21316.7. prefilter plugin ........................................................................................................ 214

    16.8. postfilter plugin ....................................................................................................... 21516.9. plugin de filtro de salida ........................................................................................... 21616.10. Plugin resource (recurso) ......................................................................................... 21816.11. insert plugin .......................................................................................................... 21917.1. Errores de Smarty .................................................................................................... 22217.2. Errores de analisis gramatical de PHP ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... 22217.3. Otros errores comunes .............................................................................................. 22318.1. Imprimiendo cuando una variable esta vacia ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 22418.2. Atribuyendo el valor por default a una variable en el template ... ... ... ... ... ... ... ... ... ... ... ... ... ... 22418.3. Pasando la variable titulo al encabezado del template ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 22518.4. Usando date_format ..... ...... ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... ..... ...... ..... ...... .... 22618.5. Convirtiendo elementos en forma de fecha de vuelta a un timestamp .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . 22718.6. Usando insert para escribir un encabezado WML Content-Type .... ... ... ... ... ... ... ... ... ... ... ... .. 228

    18.7. Templates con Componetes ...... ...... ..... ...... ..... ..... ...... ..... ...... ..... ...... ...... ..... ...... ..... .... 22918.8. Ejemplo de ofuscamiento de una direccion de E-mail ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 230

  • 5/20/2018 Smarty Manual Es 2.6

    12/244xii

    PrlogoEsta es indudablemente una de las preguntas que mas se hacen en las listas de correo de PHP: Como hacermis scripts de PHP independientes del diseo?. Mientras PHP se encarga de como "incrustar scripts enlenguaje HTML", despus de escribir los proyectos que mezclan PHP y HTML libremente, esto trae como

    consecuencia la idea de separar la forma y el contenido, muy buena idea[TM]. En adicin, en muchascompaias la interpretacin de esquema es diseador y programador por separado. Por consiguiente, labusqueda trae como solucin una plantilla(template).

    Por ejemplo en nuestra compaia, el desarrollo de una aplicacin es como sigue: Despus de tener ladocumentacin necesaria, el diseador de web disea el prototipo de la interfaz y la entrega al programador.El programador implementa las reglas de negocio en PHP y usa el prototipo para crear el "esqueleto" de laplantilla. El proyeto esta en manos de la persona responsable del HTML designer/web page que produzcala plantilla para su gloria completa. El proyecto debe ir y regresar entre programacin/HTML varias veces.De esa manera, es importante para tener un buen suporte de templates porque los programadores no quierenhacer nada con HTML ni quieren diseo HTML al rededor del codigo PHP. Los diseadores precisan desoporte para archivos de configuracin, bloques dinmicos y otras interfaces usadas, mas ellos no quierenocuparse con las compejidades del lenguaje de programacin PHP.

    Buscando, actualmente existen muchas soluciones de templates disponibles para PHP, la mayor parte deellos les provee de una forma rudimentaria de sustitucin de variables dentro del template y hace unaforma limitada de la funcionalidad dinmica del bloque. Pero nuestras necesidades requieren mas que eso.Porque no queremos programadores que no quieran tener trato con HTML del todo, pero esto puede ser casiinevitable. Por ejemplo, si un diseador quiere alternar colores de fondo sobre bloques dinmicos, esto tuvoque trabajarse con el programador anticipadamente. Nosotros necesitamos tambin que los diseadoresesten capacitados para usar archivos de configuracin, y colocar variables de ellos dentro de los templates.La lista continua.

    Nosotros empezamos escribiendo por fuera una especulacin para un motor de plantillas(templates)atrasado de 1999. Despus de terminar la especulacin, comenzamos a trabajar un motor de plantillasescrito en C que esperanzadoramente fue aceptado para ser incorporado con PHP. No solamente nos

    encontramos con algunas complicadas barreras tecnicas, si no tambin hubo acalorados debates sobrelo que exactamente debia de hacer o no un motor de plantillas. De esta experiencia, decidimos que unmotor de platillas devera ser escrito en PHP como una clase, para que cualquiera lo use de la mismaforma como ellos ven. As nosotros escribimos un motor que es SmartTemplate nunca volvio aexistir(nota: esa clase nunca fue enviada al pblico). Esta era una clase que ralizaba casi todo lo quenosotros necesitabamos: sustitucin de variables regulares, soporte incluso de otras plantillas, integracincon archivos de configuracin, incrustacin de cdigo PHP, funcionalidades 'if' limitada y muchos masbloques dinmicos robustos que podran ser anidados muchas veces. Todo esto con expresiones regularesy el cdigo producido seria mejor, como diriamos nosotros, impenetrable. Eso era tambin notoriamentelento en grandes aplicaciones por todas las interpretaciones y expresiones regulares trabajando en cadarequisicin. El mayor problema del punto de vista de un programador era todo el trabajo necesario en elprocesamiento del scripts PHP y procesamiento de bloques dinmicos de la plantilla. Como hacemos esofacilmente?

    Entonces se origino la visin de que finalmente se convirtiera en Smarty. Nosotros sabemos que rpido es elcdigo PHP sin las cabeceras y la interpretacin de plantillas(templates). Tambin sabemos que meticulosoy arrogante es el lenguaje PHP su poder debe ser aceptable para un diseador, y este podra ser enmascaradocon una simples sintaxis de plantillas(templates). Entonces que pasara si nosotros convinamos las dosfuerzas? De esta manera, nacio Smarty...

  • 5/20/2018 Smarty Manual Es 2.6

    13/244

    Part I. Iniciando

  • 5/20/2018 Smarty Manual Es 2.6

    14/2442

    Table of Contents1. Que es Smarty? ......................................................................... ..................................... 32. Instalacin .................................................. ........................................................ ........... 5

    Requerimentos ................................................. ........................................................ .. 5Instalacin Bsica ................................................... .................................................... 5

    Expandiendo la configuracin ....................................................................................... 9

  • 5/20/2018 Smarty Manual Es 2.6

    15/2443

    Chapter 1. Que es Smarty?Smarty es un motor de plantillas para PHP. Mas especificamente, esta herramienta facilita la manera deseparar la aplicacin lgica y el contenido en la presentacin. La mejor descripcin esta en una situacindonde la aplicacin del programador y la plantilla del diseador juegan diferentes roles, o en la mayoria

    de los casos no la misma persona.

    Por ejemplo: Digamos que usted crea una pagina web, es decir, despliega el articulo de un diario. Elencabezado del articulo, el rotulo, el autor y el cuerpo son elementos del contenido, estos no contieneinformacin de como quieren ser presentados. Estos son pasados por la aplicacin Smarty, donde eldiseador edita la plantilla, y usa una combinacin de etiquetas HTML y etiquetas de plantilla paraformatear la presentacin de estos elementos (HTML, tablas, color de fondo, tamao de letras, hojas deestilo, etc...). Un da el programador necesita cambiar la manera de recuperar el contenido del articulo(uncambio en la aplicacin lgica.). Este cambio no afectara al diseador de la plantilla, el contenido llegaraa la plantilla exactamente igual. De la misma manera, si el diseador de la plantilla quiere redisearla ensu totalidad, estos cambios no afectaran la aplicacin lgica. Por lo tanto, el programador puede hacercambios en la aplicacin lgica sin que sea necesario restructurar la plantilla. Y el diseador de la plantillapuede hacer cambios sin que haya rompimiento con la aplicacin lgica.

    One design goal of Smarty is the separation of business logic and presentation logic. This means templatescan certainly contain logic under the condition that it is for presentation only. Things such as includingother templates, altering table row colors, upper-casing a variable, looping over an array of data anddisplaying it, etc. are all examples of presentation logic. This does not mean that Smarty forces a separationof business and presentation logic. Smarty has no knowledge of which is which, so placing business logicin the template is your own doing. Also, if you desire nologic in your templates you certainly can do soby boiling the content down to text and variables only.

    Ahora un pequeo resumen sobre que no hace Smarty. Smarty no intenta separar completamente lalgica de la plantilla. No hay problema entre la lgica y su plantilla bajo la condicin que esta lgicasea estrictamente para presentacin. Un consejo: mantener la aplicacin lgica fuera de la plantilla, y lapresentacin fuera de la aplicacin lgica. Esto tiene como finalidad tener un objeto mas manipulable yescalable para un futuro proximo.

    Un nico aspecto acerca de Smarty es la compilacin de la plantilla. De esta manera Smarty lee la plantillay crea los scripts de PHP. Una vez creados, son executados sobre l. Por consiguiente no existe ningncosto por analizar gramaticalmente cada archivo de template por cada requisicin, y cada template puedellevar toda la ventaja del compilador de cache de PHP tal como Zend Accelerator (http://www.zend.com/)o PHP Accelerator (http://www.php-accelerator.co.uk).

    Algunas de las caractersticas de Smarty:

    Es extremamente rpido.

    Es eficiente ya que puede interpretar el trabajo mas sucio.

    No analiza gramaticalmente desde arriba el template, solo compila una vez.

    El esta atento para solo recompilar los archivos de plantilla que fueron cambiados.

    Usted puede crear funciones habituales y modificadores de variables customizados, de modo que ellenguaje de la platilla es altamente extensible.

    Sintaxis de etiquetas delimitadoras para configuracin de la plantilla, as lo puede usar {}, {{}}, , etc.

    http://www.php-accelerator.co.uk/http://www.zend.com/http://www.php-accelerator.co.uk/http://www.zend.com/
  • 5/20/2018 Smarty Manual Es 2.6

    16/244

    Que es Smarty?

    4

    Los construtoress if/elseif/else/endif son pasados por el interpretador de PHP, as la sintaxis de laexpresin {if ...} puede ser compleja o simple de la forma que usted quiera.

    Permite un anidamiento ilimitado de sections, ifs, etc.

    Es posible incrustar directamente codigo PHP en los archivos de plantilla, aunque esto puede no sernecesario(no recomendado) dado que la herramienta se puede ajustar.

    Soporte de caching incrustado

    Fuentes de Plantilla absoluto

    Funciones habituales de manipulacin de cache

    Arquitectura de Plugin

  • 5/20/2018 Smarty Manual Es 2.6

    17/2445

    Chapter 2. Instalacin

    RequerimentosSmarty Requiere un servidor web corriendo PHP 4.0.6 o posterior.

    Instalacin BsicaInstale los archivos de la libreria de Smarty que estan en el directorio de distribucin /libs/. Estos son losarchivos PHP que usted NO EDITARA. Estos archivos son toda las aplicaciones comunes y ellos sonactualizados cuando usted actualiza a una nueva versin de Smarty.

    Example 2.1. Archivos de la libreria Smarty

    Smarty.class.php

    Smarty_Compiler.class.php

    Config_File.class.php

    debug.tpl

    /internals/*.php (all of them)

    /plugins/*.php (all of them)

    Smarty utiliza una constante de PHP llamada SMARTY_DIR que es la ruta para el directoriode la biblioteca de Smarty 'libs/'. Basicamente, si su aplicacin puede encontrar el archivoSmarty.class.php , usted no necesita definir SMARTY_DIR, Smarty lo encontrar. Porconsiguiente si, Smarty.class.php no esta incluido en el path, y no es abastecido por unaruta absoluta para encontrar su aplicacin, entonces usted debe definir SMARTY_DIR manualmente.SMARTY_DIR debe incluir una barra de seguimento.

    Aqu esta un ejemplo de como se crea una instancia de Smarty en sus scripts PHP:

    Example 2.2. Creando una instancia Smarty de Smarty

    Intente correr el script de arriba. Si usted obtiene un error diciendo que el archivoSmarty.class.phpno fue encontrado, puedes usar una de las siguientes opciones:

  • 5/20/2018 Smarty Manual Es 2.6

    18/244

    Instalacin

    6

    Example 2.3. Reemplazar por la ruta absulta de la libreria del archivo

    Example 2.4. Adicionar el directorio de la libreria para incluirlo en el include_pathde PHP

    Example 2.5. Defina la constante SMARTY_DIR manualmente

    Ahora que la libreria de archivos esta en su sitio, es tiempo de configurar los directorios de Smarty parasu aplicacin.

    Smarty require cuatro directorios (por defaul) llamados 'templates/', 'templates_c/','configs/'y 'cache/'.

    Cada uno de estos son para definir las propiedades de las clases de Smarty. $template_dir,$compile_dir, $config_dir, y $cache_dirrespectivamente. Es altamente recomendado queusted configure un grupo separado de estos directorios para cada aplicacin que utilice de Smarty.

    Asegurece que usted sabe la ubicacin del document root de su servidor web. En nuestro ejemplo,el document root esta en /web/www.example.com/docs/. Los directorios de Smarty solo sonaccesados por la libreria de Smarty y nunca son accesados directamente por el navegador. Por consiguientepara evitar cualquier preocupacin con la seguridad, es recomendado colocar estos directorios fuera deldocument root.

  • 5/20/2018 Smarty Manual Es 2.6

    19/244

    Instalacin

    7

    Para nuestro ejemplo de instalacin, configuraremos el ambiente de Smarty para una aplicacin de librode visitas. Escojemos una aplicacin solo con el proposito de crear un directorio de nombre convencional.Usted puede usar el mismo ambiente para cualquier aplicacin, solamente sustituya "guestbook" conel nombre de su aplicacin. Nosotros colocaremos nuestros directorios de Smarty dentro de /web/www.example.com/smarty/guestbook/ .

    Usted necesita tener por lo menos un archivo dentro de su document root, y que sea accesado por elnavegador. Nosotros llamamos el script de 'index.php', y lo colocamos en un subdirectorio dentro deldocument root llamado /guestbook/.

    Nota Tcnica:

    Es conveniente configurar el servidor de forma que "index.php" pueda ser identificado como elndice del directrio padre, de esta manera si usted accesa http://www.example.com/guestbook/,el script index.php ser ejecutado sin "index.php" ni la URL. En Apache usted puede definirel sitio adicionando "index.php" en el final de su configuracin del directorioDirectoryIndex(separando cada uno con espacios.) como en el ejemplo de httpd.conf.

    DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi

    Veamos nuestra estructura de archivos hasta hora:

    Example 2.6. Ejemplo de estrutura de archivo

    /usr/local/lib/php/Smarty/Smarty.class.php

    /usr/local/lib/php/Smarty/Smarty_Compiler.class.php

    /usr/local/lib/php/Smarty/Config_File.class.php

    /usr/local/lib/php/Smarty/debug.tpl

    /usr/local/lib/php/Smarty/internals/*.php

    /usr/local/lib/php/Smarty/plugins/*.php

    /web/www.example.com/smarty/guestbook/templates/

    /web/www.example.com/smarty/guestbook/templates_c/

    /web/www.example.com/smarty/guestbook/configs/

    /web/www.example.com/smarty/guestbook/cache/

    /web/www.example.com/docs/guestbook/index.php

    Smarty necesitara permisos de escritura(usuarios de windows ingnorar) para$compile_diry$cache_dir,esto garantiza que el usuario del servidor pueda escribir en ellos. Este es generalmente el usuarios "nobody"y el grupo "nobody". Para usuarios con X sistema operativo, el default es "www" y el grupo "www". Siusted esta usando Apache, puede ver en su archivo httpd.conf (normalmente en "/usr/local/apache/conf/")cual es el usuario y grupo que estan siendo usados.

  • 5/20/2018 Smarty Manual Es 2.6

    20/244

    Instalacin

    8

    Example 2.7. Configurando permisos de archivos

    chown nobody:nobody /web/www.example.com/smarty/guestbook/templates_c/

    chmod 770 /web/www.example.com/smarty/guestbook/templates_c/

    chown nobody:nobody /web/www.example.com/smarty/guestbook/cache/

    chmod 770 /web/www.example.com/smarty/guestbook/cache/

    Nota Tcnica:

    chmod 770 puede ser una seguridad bastante fuerte, solo le permite al usuario "nobody" y al grupo"nobody" acesso de lectura/escritura a los directorios. Si usted quiere abrir permiso de lectura acualquiera (en la mayoria de las veces para su propia conveniencia de querer ver estos archivos),usted puede usar el 775 en lugar del 770.

    Nosotros necesitamos crear el archivo index.tpl, para que Smarty lo pueda cargar. Este estara localizadoen su $template_dir.

    Example 2.8. Editando /web/www.example.com/smarty/guestbook/templates/index.tpl

    {* Smarty *}

    Hello, {$name}!

    Nota Tcnica:

    {* Smarty *} Esto es un comentario en el template. Este no es obligatorio, pero si una buenapractica iniciar todos sus archivos de plantilla con estos comentarios. Esto hace facilmentereconocibles a los archivos a pesar la extencin del archivo. Por ejemplo, editores de texto puedenreconocer el archivo y habilitar un realce de sintaxis especial.

    Ahora vamos a editar el index.php. crearemos una instancia de Smarty, daremos valor a las variablesdel template y mostraremos el archivo index.tpl. En el ambiente de nuestro ejemplo, "/usr/local/lib/php/

    Smarty" esta dentro de include_path. Asegurese que exista el mismo, o utilice la ruta absoluta.

  • 5/20/2018 Smarty Manual Es 2.6

    21/244

    Instalacin

    9

    Example 2.9. Editando /web/www.example.com/docs/guestbook/index.php

    Nota Tcnica:

    En nuestro ejemplo, estamos configurando rutas absolutas para todos los directorios de Smarty.Si /web/www.example.com/smarty/guestbook/ est dentro de su include_path dePHP, entonces estas declaraciones no son necesarias. Sin embargo, esto es mas eficiente y (porexperiencia) tiene menos tendencia a errores en relacin a determinar las rutas absolutas. Estogarantiza que Smarty esta recibiendo los archivos del directorio que usted desea.

    Ahora carge el archivo index.phpdesde su navegador web. Usted debera ver "Hello, Ned!"

    Usted a completado la configuracion basica para el Smarty!

    Expandiendo la configuracinEsta es una continuacin de la instalacin bsica, por favor lea esta primero!

    Una forma un poco mas flexible de configurar el Smarty, expandir las clases e iniciar su ambiente deSmarty. Es, en vez de configurar rutas de directorios repetidamente, asigne esas mismas a variables,etc., nosotros podemos facilitar eso. Vamos a crear un nuevo directorio en "/php/includes/guestbook/"y llamemos al nuevo archivo setup.php . En nuestro ejemplo, "/php/includes" est en nuestroinclude_path. Verifique que usted tambin lo definio, o utilice rutas absolutas de los archivos.

  • 5/20/2018 Smarty Manual Es 2.6

    22/244

    Instalacin

    10

    Example 2.10. Editando /php/includes/guestbook/setup.php

    Ahora vamos a modificar el archivo index.php para usar el setup.php:

  • 5/20/2018 Smarty Manual Es 2.6

    23/244

    Instalacin

    11

    Example 2.11. Editando /web/www.example.com/docs/guestbook/index.php

    Ahora usted vera que es completamente simple crear una instancia de Smarty, solo use Smarty_GuestBook,que automticamente inicializa todo para nuestra aplicacin.

  • 5/20/2018 Smarty Manual Es 2.6

    24/244

    Part II. Smarty For Template Designers

  • 5/20/2018 Smarty Manual Es 2.6

    25/24413

    Table of Contents3. Basic Syntax ................... ........................................................ ..................................... 15

    Comentarios ..................................................... ........................................................ 15Variables ..................................................... ....................................................... ..... 15Funciones .. ....................................................... ....................................................... 16

    Atributos ................................................................................................... .............. 17Colocando variables entre comillas dobles ..................................................................... 17Matemticas ............................................................................................................. 18Escaping Smarty Parsing ............................................................................................ 18

    4. Variables ............................................................................................... ...................... 20Variables definidas desde PHP .................................................................................... 20

    Arreglos asociativos ........................................................ .................................. 21ndices de Matrices ...................................................... ..................................... 22Objects ............................................................................................................ 23

    Variables cargadas desde archivos de configuracin ....... ...... ..... ...... ..... ...... ...... ..... ...... .... 24La variable reservada {$smarty} .................................................................................. 26

    Solicitud deVariables ........................................................................................ 26{$smarty.now} ........................................................... ...................................... 26{$smarty.const} ................................................................................................ 27{$smarty.capture} ..................................................... ........................................ 27{$smarty.config} ............................................................................................... 27{$smarty.section},{$smarty.foreach} ...... ..... ...... ...... ..... ...... ..... ...... ...... ..... ...... ..... 27{$smarty.template} ............................................................................................ 27{$smarty.version} .................................................... ......................................... 27{$smarty.ldelim}, {$smarty.rdelim} .................................................. ................... 27

    5. Modificadores de variables .............................................................. ............................... 28capitalize ................................................................................................................. 29cat .......................................................................................................................... 29count_characters ...................................................................... ................................. 30count_paragraphs .. ...................................................... .............................................. 31

    count_sentences ........................................................................................................ 32count_words ............................................................................................................. 33date_format .............................................................................................................. 34default .............................................................................................. ...................... 37escape ..................................................................................................................... 38indent ..................................................................................................................... 39lower ..................................................................................................... ................. 41nl2br ....................................................................................................................... 41regex_replace . ... ... ... ............................................................................ ..................... 42replace ............................................................................................. ....................... 43spacify ...................................................................................................... .............. 44string_format ............................................................................................................ 45strip ........................................................................................................................ 46

    strip_tags ................................................................................................................. 47truncate ...... ...... ..... .................................................................................................. 48upper ..................................................................................................... ................. 50wordwrap ......................................................................................................... ....... 51

    6. Combinando Modificadores ............................................................................................. 537. Funciones Integradas ................................................................................... .................. 54

    capture .................................................................................................................... 54config_load .............................................................................................................. 55{foreach},{foreachelse} ......................................................... .................................... 58

  • 5/20/2018 Smarty Manual Es 2.6

    26/244

    Smarty For Template Designers

    14

    iteration ................................................... ........................................................ 61first ....................................................... ........................................................ . 61last ................................................ ........................................................ ......... 61show ............................................................................................................... 61total ..................................................... ....................................................... .... 61

    include ........................... ....................................................... .................................. 62

    {include_php} ................................................... ....................................................... 64insert ....................................................... ....................................................... ........ 65if,elseif,else ................................................ ........................................................ ...... 66{ldelim},{rdelim} ................................................. .................................................... 69literal .......................... ....................................................... ..................................... 69{php} ................................ ....................................................... ............................... 70section,sectionelse ..................................................................................................... 71

    index ............................................... ........................................................ ....... 78index_prev ....................................................... ................................................ 79index_next ....................................................................................................... 79iteration ........................................................................................................... 80first ................................................................................... ............................. 82last ................................................................... .............................................. 82

    rownum ........................................................................................................... 82loop ................................................................................................................ 82show ...... ......................................................................................................... 83total ................................................................................................................ 84

    {strip} ...... ..... .......................................................................................................... 858. Custom Functions ................................................................................... ...................... 87

    {assign} ................................................................................... ............................... 87{counter} ................................................................................................................. 88cycle ....................................................................................................................... 89{debug} ..... ..... .................................................................................... .................... 91{eval} ..................................................................................................................... 91{fetch} ...... ..... ......................................................................................................... 93{html_checkboxes} ............................................................. ...................................... 94{html_image} ........................................................................................................... 96{html_options} ......................................................................................................... 97{html_radios} . .. ............................................................ .......................................... 100{html_select_date} ... ...... ...... .................................................. ................................. 103{html_select_time} ...................................................... ............................................ 108{html_table} ........................................................................................................... 112math ....................................................................................... .............................. 114{mailto} ..... ..... ...... .......................................................... ...................................... 117{popup_init} .............................................................................. ............................ 118popup .................................................................................................................... 119{textformat} ........................................................................ ................................... 124

    9. Config Files ................................................................................................................ 128

    10. Debugging Console .......................................................................... .......................... 130

  • 5/20/2018 Smarty Manual Es 2.6

    27/24415

    Chapter 3. Basic SyntaxTodas las etiquetas del template deben estar marcadas por delimitadores. Por default , estos delimitadoresson {y }, sino estos pueden cambiar.

    Para estos ejemplos, nosotros asumiremos que usted est usando los delimitadores por default. En Smarty,todo el contenido fuera de los delimitadores es mostrado como contenido estatico, o igual(sin cambios).Cuando Smarty encuentra etiquetas en el template, trata de interpretarlos, e intenta mostrar la salidaapropiada en su lugar.

    ComentariosLos comentarios en los templates son cercados por asteriscos, y por los delimitadores, as: {* este es uncomentario *}. Los comentarios en Smarty no son mostrados en la salida final del template. semejantes a Estos son usados para hacer notas internas dentro del template.

    Example 3.1. Comentarios

    {* this multiline

    comment is

    not sent to browser

    *}

    {* include the header file here *}

    {include file="header.tpl"}

    {* Dev note: $includeFile is assigned foo.php script *}

    {include file=$includeFile}

    {include file=#includeFile#}

    {* display dropdown lists *}

    {html_options options=$vals selected=$selected_id}

    VariablesLas variable de Template que comiencen con signo de pesos. Pueden contener nmeros, letras y guionesbajos, muy parecido a las variables de PHP [http://php.net/language.variables]. Usted tambin puede hacerreferencia a arreglos que puden ser numericos o no-numericos. Tambin puede hacer referencia a mtodosy propiedades de objetos. Config file variables es una excepcin de la sintaxis del signo de pesos. Tambinpuede ser referenciado entre #signos de numeros#, o con la variable especial $smarty.config.

    http://php.net/language.variableshttp://php.net/language.variables
  • 5/20/2018 Smarty Manual Es 2.6

    28/244

    Basic Syntax

    16

    Example 3.2. Variables

    {$foo}

  • 5/20/2018 Smarty Manual Es 2.6

    29/244

    Basic Syntax

    17

    Las funciones internas y las funciones habituales, ambas deben tener la misma sintaxis dentro del template.Las funciones internas que funcionan en Smarty, son: {if}, {section} y {strip}. Estas no pueden sermodificadas. Las funciones habituales son funciones adicionales implementadas por plugins. Estas sipueden ser modificadas como usted quiera, o usted tambin puede adicionar nuevas. {html_options} y{popup} son ejemplos de funciones habituales.

    AtributosLa mayoria de las funciones llevan atributos que especifican o cambian su funcionamiento. Los atributospara las funciones de Smarty son muy parecidos a los atributos de HTML. Los valores estaticos nonecesitan estar entre comillas, pero si es recomendado para cadenas y literales. Las variables tambinpueden ser usadas y no precisamente estando entre comillas.

    Algunos atributos requieren valores boleanos(true o false). Estos pueden ser especificados como cualquierotro valor sin comillas true, on, y yes, o false, off, y no.

    Example 3.4. Sintaxis de atributos de Funciones

    {include file="header.tpl"}

    {include file="header.tpl" attrib_name="attrib value"}

    {include file=$includeFile}

    {include file=#includeFile# title="Smarty is cool"}

    {html_select_date display_days=yes}

    {html_options options=$choices selected=$selected}

    Colocando variables entre comillas doblesSmarty puede reconocer variables asignadas entre comillas aunque estas solo tengan nmeros, letras,guiones bajos y corchetes[]. Con cualquier otro carcter(puntos, referencia de objetos, etc.) las variablesdeben estar entre apostrofos. Usted no puede incrustar modificadores, Estos deben ser siempre aplicadosfuera de las comillas.

  • 5/20/2018 Smarty Manual Es 2.6

    30/244

    Basic Syntax

    18

    Example 3.5. Sintaxis entre comillas

    SYNTAX EXAMPLES:

    {func var="test $foo test"}

  • 5/20/2018 Smarty Manual Es 2.6

    31/244

    Basic Syntax

    19

    Esta puede ser una simple situacin separando enteramente su codigo JavaScript y CSS dentro de unarchivo personal y utilizar el metodo standar del HTML para el acceso.

    Es posible usar literal incluyendo el contenido del bloque {literal} .. {/literal}. Similar a usar entidadesHTML, usted puede usar {ldelim},{rdelim} o {$smarty.ldelim} para mostrar los delimitadores actuales.

    Esto a menudo es conveniente para cambios simples a Smarty's $left_delimiter y $right_delimiter.

    Example 3.7. Ejemplo cambiando delimitadores

    Donde example.tpl es:

    var foo = ;

    function dosomething() {

    alert("foo is " + foo);

    }dosomething();

    Ver Tambin escape modifier

  • 5/20/2018 Smarty Manual Es 2.6

    32/24420

    Chapter 4. VariablesSmarty tiene varios tipos diferentes de variables. El tipo de variable depende de cual simbolo esteprefijado(incluido dentro).

    Las variables de Smarty no pueden ser mostradas directamente o usadas como argumentos paraatributos, funciones y modificadores, dentro de expresiones condicionales, etc. Para mostrar una variable,simplesmente coloque esta entre delimitadores siendo esta la nica cosa entre ellos. Ejemplos:

    {$Name}

    {$Contacts[row].Phone}

    Variables definidas desde PHPLas variables que son asignadas desde PHP son referenciadas precedidas estas con una seal de cifrado$. Las variables definidas dentro del template como una funcin assign tambin son mostradas de estamanera.

  • 5/20/2018 Smarty Manual Es 2.6

    33/244

    Variables

    21

    Example 4.1. variables definidas

    php script

    Donde el contenido de index.tpl es:

    Hello {$firstname} {$lastname}, glad to see you can make it.


    {* this will not work as $vars are case sensitive *}

    This weeks meeting is in {$meetingplace}.

    {* this will work *}

    This weeks meeting is in {$meetingPlace}.

    esta es la salida:

    Hello Doug Evans, glad to see you can make it.


    This weeks meeting is in .

    This weeks meeting is in New York.

    Arreglos asociativosUsted tambin puede referenciar matrices asociativas en variables que son definidas desde PHPespecificando la clave despus del simbolo '.'(punto).

  • 5/20/2018 Smarty Manual Es 2.6

    34/244

    Variables

    22

    Example 4.2. Accesando variables de matriz asociativa

    Donde el contenido de index.tpl es:

    {$Contacts.fax}

    {$Contacts.email}

    {* you can print arrays of arrays as well *}

    {$Contacts.phone.home}

    {$Contacts.phone.cell}

    esta es la salida:

    555-222-9876

    [email protected]

    555-444-3333

    555-111-1234

    ndices de Matrices

    Usted podra referencia matrizes por su ndice, muy semejantes a la sintaxis de PHP.

  • 5/20/2018 Smarty Manual Es 2.6

    35/244

    Variables

    23

    Example 4.3. Accesando matrices por sus ndices

    Donde index.tpl es:

    {$Contacts[0]}

    {$Contacts[1]}

    {* you can print arrays of arrays as well *}

    {$Contacts[2][0]}

    {$Contacts[2][1]}

    esta es la salida:

    555-222-9876

    [email protected]

    555-444-3333

    555-111-1234

    Objects

    Las propiedades de los objetos definidos desde PHP pueden ser referenciados especificando el nombre dela propiedad despus del simbolo '->'.

  • 5/20/2018 Smarty Manual Es 2.6

    36/244

    Variables

    24

    Example 4.4. Accesando propiedades de los Objetos

    name: {$person->name}

    email: {$person->email}

    esta es la salida:

    name: Zaphod Beeblebrox

    email: [email protected]

    Variables cargadas desde archivos deconfiguracinLas variables que son cargadas de archivos de configuracin son referenciadas incluyendo entre ellas elsigno(#), o como variables de Smarty $smarty.config. La segunda sintaxis es util para incrustar valoresde un atributo dentro de comillas.

  • 5/20/2018 Smarty Manual Es 2.6

    37/244

    Variables

    25

    Example 4.5. Variables de configuracinfoo.conf:

    pageTitle = "This is mine"

    bodyBgColor = "#eeeeee"

    tableBorderSize = "3"

    tableBgColor = "#bbbbbb"

    rowBgColor = "#cccccc"

    index.tpl:

    {config_load file="foo.conf"}

    {#pageTitle#}

    First

    Last

    Address

    index.tpl: (sintaxis alternativa)

    {config_load file="foo.conf"}

    {$smarty.config.pageTitle}

  • 5/20/2018 Smarty Manual Es 2.6

    38/244

    Variables