• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Twig
 

Twig

on

  • 3,194 views

Presentación de Twig para symfony 2 formacion emagister.com

Presentación de Twig para symfony 2 formacion emagister.com

Statistics

Views

Total Views
3,194
Views on SlideShare
1,380
Embed Views
1,814

Actions

Likes
1
Downloads
21
Comments
0

2 Embeds 1,814

http://engineering.emagister.com 1813
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Twig Twig Presentation Transcript

    • Twig en Symfony 2.1 Para programadores y diseñadores
    • ¿Qué es Twig? Twig is a modern template engine for PHP (definición de la web de twig) Rápido (compila los templates en código php optimizado) Seguro (tiene un modulo de sandbox para evaluar código no verificado) Flexible (permite al desarrollador definir sus própios custom tags)
    • ¿Por qué otro motor de templates? PHP es el mismo un motor de templates (muy largo de escribir) Me explico: <?php echo htmlspecialchars($var, ENT_QUOTES, UTF-8) ?> {{ var|e }}
    • Sintaxis orientada a Templates Hay muchos accesos directos (Shortcuts) para realizar las acciones mas comunes. Un ejemplo (cuando iteramos sobre un array vacio): {% for user in users %} * {{ user.name }} {% else %} No user have been found. {% endfor %}
    • Todas las funciones Con twig tenemos todas las opciones posibles a la hora de crear templates, tenemos herencia multiple, bloques de código, escape automático y muchas otras funcionalidades. {% extends "layout.html" %} {% block content %} Content of the page... {% endblock %}
    • Mas cosas que tiene twig Fácil de aprender Extensible (Permite crear tus propios tags, filtros, etc..) Unit Tested (Twig está testeado completamente y preparado para grandes proyectos) Documentado Seguro Mensajes de error claros Rápido
    • ¿Quien está detrás de todo? @fabpot
    • ¿qué nos da twig?
    • Básico de twig {# Comentario #} {{ mostrar_algo }} {% hacer algo %}
    • Variables {{ name }} === <?php echo $name; ?>
    • Tags{% if online == false %} <p>Our website is in maintenance mode. Please, come back later.</p>{% endif %}
    • Filters {{ my first car|capitalize }}
    • Funciones {{ random() }}  (funciona como la nativa de PHP `mt_rand`) {{ random(5) }}
    • Tests{# Se evalúa a true si la variable is null, false, o cadenavacía #} {% if foo is empty %} ... {% endif %}
    • NOTA: Twig no tiene el operador === Para esto usamos una función “sameas” {% if foo.attribute is sameas(false) %} the foo attribute really is the ``false`` PHP value {% endif %}
    • Embed Include Extends Embed {% embed "lateral.twig” %} {% block principal %} ... {% endblock %} {% endembed %}
    • Documentación interesante http://twig.sensiolabs.org/  http://twig.sensiolabs.org/documentation http://www.symfony.es/2012/06/17/desymfony2012- twig-los-mejores-trucos-y-tecnicas-avanzadas/
    • Vale, Fin de diapositivas Creamos un proyecto de symfony 2.1 para hacer cositasphp composer.phar create-project symfony/framework-standard-edition twig-formacionCopiamos composer.phar en twig-formacion y ejecutamos:php composer.phar installChmod –R 777 app/cacheChmod –R 777 app/logshttp://local.twig-formacion.com/app_dev.php/demo/hello/
    • Un poquito de Symfony Accedemos a  DemoBundle -> Controller -> DemoController.php helloAction Template  Resources/views/demo/hello.html.twig Interesante para pasar parámetros Symfony hace un return de un array con las variables a pasar a la vista.
    • Ejercicios1. Pasar una variable nueva desde el controller a twig y printar por pantalla.2. Imprimir un array ordenado 1. {{ array | sort }}3. Escapar una variable 1. {{ string | e(„html‟) }}4. Escapar una cadena de texto larga {% filter escape(html) %} <script type="text/javascript"> Var texto="<p>Loremipsumdolorsitamet</p>"; alert(texto); </script> {%end filter %}
    • Random Presenta por pantalla un numero aleatorio Presenta por pantalla un numero aleatorio menor que 10 Presenta por pantalla un carácter aleatorio de un string Presenta por pantalla un elemento aleatorio de un array
    • Fechas Print dia de hoy  {{„now‟ | date(“d”)}} Print fecha completa dd/mm/yyyy HH:mi:ss  {{„now‟ | date(“d/m/Y H:i:s”)}} Print de la fecha y la hora de ahora en Argentina  {{now|date("d/m/Y H:i:s","America/Argentina/Buenos_Aires")}} Print la fecha de aquí a 30 días  {{date(+30days)|date}}
    • Date Ejemplo interesante Si tenemos una variable fechaNacimiento como hacemos la comprobación si el usuario es menor de edad ? {% if date(fechaNacimiento) < date(„-18years‟) %} Eres menor de edad {% endif %}
    • Otra de date Queremos imprimir la fecha del proximo viernes.El curso de formularios en SF2 será el{{date(next Friday)|date(„d/m/Y 14:00‟)}}
    • Arrays Tenemos el siguiente array {% set oferta = { precio:30, fechaExpiracion:date(+30days) }%} Como mostramos lo siguiente: La oferta cuesta 30 euros (35.4 con IVA) y es válida hasta el 19/08/2012
    • Varias opciones ~ (concatenar con el MAC alt + ñ) {{La oferta cuesta‟ ~ oferta.precio ~ euros(‟ ~ oferta.precio*1.18 ~‟ con IVA)y es válida hasta el‟ ~oferta.fechaExpiracion|date()}} Format() {{La oferta cuesta %.2f euros(%.2f con IVA)y es válida hasta el %s|format(oferta.precio, oferta.precio*1.18,oferta.fech aExpiracion|date())}}
    • Mas opciones Replace() {{La oferta cuesta :precio euros( :total con IVA)y es válida hasta el :fecha|replace({:precio:oferta.precio,:total:oferta.pr ecio*1.18,:fecha:oferta.fechaExpiracion|date()})}} La chula {{"La oferta cuesta #{oferta.precio} euros(#{oferta.precio*1.18} con IVA) y es válida hasta el #{oferta.fechaExpiracion|date()}"}}
    • Listas Dada una lista como esta {% set lista=[a,b,c,d] %} Queremos imprimir solo b, c, d Solucion: {% for value in lista[1:] %} {{value}} {% endfor %}
    • Includes{% extends request.ajax ? "base_ajax.html" : "base.html" %}{% block content %} Este es el contenido a mostrar.{% endblock %}
    • Ejercicios Crear un template que herede de otro y que cree un bloque con una capa con fondo de color rojo.  Podemos usar el layout por defecto El que herede que sea de color azul
    • Include Crear un template hello2.html.twig que se incluya al principio del bloque content. NOTA: no se puede añadir contenidos en templates que hereden de otros, fuera de los bloques.{% include AcmeDemoBundle::demo/hello2.html.twig %}Podemos usar include con el simbolo de concatenar (~)incluso usando filtros.{% include var|default(index) ~ _foo.html %}
    • Muchas Gracias Preguntas @fabpot