SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
Twig, что за ...?

                                 Alex Demchenko
                                alex@lazy-ants.de




суббота, 29 октября 11 г.
Twig, что за ...?




                            Покурим?




суббота, 29 октября 11 г.
Twig, что за ...?




                              template engine
                                     &
                            templating language



суббота, 29 октября 11 г.
Twig, что за ...?




                               symfony 2
                            templating layer




суббота, 29 октября 11 г.
Twig, что за ...?




                            template engine
                                 twig
                                 php
                                smarty


суббота, 29 октября 11 г.
Twig, что за ...?




      /**
       * This engine knows how to render Twig templates.
       *
       * @author Fabien Potencier <fabien@symfony.com>
       */
      class TwigEngine implements EngineInterface




        https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/TwigBundle/TwigEngine.php#L20




суббота, 29 октября 11 г.
Twig, что за ...?




                            templating language
                                    twig
                                    php
                                  smarty


суббота, 29 октября 11 г.
Twig, что за ...?




                            как отключить?




суббота, 29 октября 11 г.
Twig, что за ...?




    # app/config/config.yml
    framework:
        # ...
        templating: { engines: ['twig', 'php'] }



       http://symfony.com/doc/current/cookbook/templating/PHP.html




суббота, 29 октября 11 г.
Twig, что за ...?




                            index.html.php




суббота, 29 октября 11 г.
Twig, что за ...?




                       Подключить к любому
                             проекту




суббота, 29 октября 11 г.
Twig, что за ...?




   require_once '/path/to/lib/Twig/Autoloader.php';
   Twig_Autoloader::register();

   $loader = new Twig_Loader_Filesystem('/path/to/templates');
   $twig = new Twig_Environment($loader, array(
     'cache' => '/path/to/compilation_cache',
   ));

   echo $twig->render('index.html', array('twitter' => '#sfcampua'));




суббота, 29 октября 11 г.
Twig, что за ...?




              {% extends "layout.html" %}

              {% block content %}
                  Symfony Camp UA
                  twitter hash {{ twitter }}!
              {% endblock %}




суббота, 29 октября 11 г.
Twig, что за ...?




                 Основная задача любого
                     шаблонизатора
                   упростить работу с
                      шаблонами



суббота, 29 октября 11 г.
Twig, что за ...?




                            •Простой синтаксис
                            •Безопасность
                            •Наследование
                            •Хелперы
                            •Sandbox
                            •...
суббота, 29 октября 11 г.
Twig, что за ...?




                {# ... #}   комментарии

                {% ... %}   блоки

                {{ ... }}   отображение


суббота, 29 октября 11 г.
Twig, что за ...?




         {%           if user is defined %}
         !!           Привет {{ user.name }}
         !!           сейчас {{ ‘now’ | date(‘d.m.Y’) }}
         {%           endif %}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Вывод переменных




суббота, 29 октября 11 г.
Twig, что за ...?




         ! ! Привет {{ user.name }}
             отличное {{ photo }}




суббота, 29 октября 11 г.
Twig, что за ...?




                      Выполнение чего-либо




суббота, 29 октября 11 г.
Twig, что за ...?




         {% if user is defined %}
         ! ! ...
         {% endif %}




суббота, 29 октября 11 г.
Twig, что за ...?




         {% spaceless %}
         <ul>
           <li>
              <a ... >XXX</a>
           </li>
           <li>
           ...
         {% endspaceless %}



суббота, 29 октября 11 г.
Twig, что за ...?




         <ul><li><a ... >XXX</a></li><li>...




суббота, 29 октября 11 г.
Twig, что за ...?




                                set
                            if ... else
                                 for
                             include
                              block

суббота, 29 октября 11 г.
Twig, что за ...?




                            Комментарии
                            игнорируются

         {# if user is defined #}

         {#!! ...
          endif #}



суббота, 29 октября 11 г.
Twig, что за ...?




                 установка и отображение
                       переменных




суббота, 29 октября 11 г.
Twig, что за ...?




         {% set foo = 'foo' %}
         {{ foo }}

         {% set foo = [1, 2] %}
         {{ foo.0 }}

         {% set foo = {'foo': 'bar'} %}
         {{ foo.bar }}



суббота, 29 октября 11 г.
Twig, что за ...?




                            массивы и хеши




суббота, 29 октября 11 г.
Twig, что за ...?




                            array, []

         {% for list in ['one', 'two'] %}
             ...
         {% endfor %}




суббота, 29 октября 11 г.
Twig, что за ...?




                            hash, {}

 {% for key, val in {'en': 'US', 'de': 'DE'} %}
     ...
 {% endfor %}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Операторы




суббота, 29 октября 11 г.
Twig, что за ...?




                 {{ 1 + 2 }}

                 {{ 'con'~'cat' }}

                 {% for i in 'a'..'z' %}
                       {{ i }}
                 {% endfor %}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Фильтры




суббота, 29 октября 11 г.
Twig, что за ...?




                  Привет {{ user.name | upper }}




суббота, 29 октября 11 г.
Twig, что за ...?




                  сейчас {{ ‘now’ | date(‘d.m.Y’) }}




суббота, 29 октября 11 г.
Twig, что за ...?




                  {{ list | join(‘,’) }}




суббота, 29 октября 11 г.
Twig, что за ...?




                  {{ title | striptags | upper }}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Функции




суббота, 29 октября 11 г.
Twig, что за ...?




                            range(0, 3)

          {% for i in range(0, 3) %}
              {{ i }},
          {% endfor %}




суббота, 29 октября 11 г.
Twig, что за ...?


                            Наследование




суббота, 29 октября 11 г.
Twig, что за ...?
{% extends 'RopacGalleryFrontendBundle::layout.html.twig' %}

{% block page_class %} page_artist_news {% endblock %}

{% block mobile_menu %}
    {% include 'RopacGalleryFrontendBundle:Artist:mobile_menu.html.twig' with
{'active': 'news'} %}
{% endblock %}

{% block content %}
    <article class="artist">
        <header class="artist_news_header">
            <h1>{{artist.firstname}} <strong>{{artist.lastname}}</strong></h1>
        </header>

        {% include 'RopacGalleryFrontendBundle:Artist:submenu.html.twig' with
{'artist': artist, 'active': 'news'} %}

                {% include 'RopacGalleryFrontendBundle:News:list.html.twig' with {'news':
news} %}

       </article>

       {{ parent() }}

{% endblock %}


суббота, 29 октября 11 г.
Twig, что за ...?




                            Экранирование




суббота, 29 октября 11 г.
Twig, что за ...?




          {{ user.name|e }}
          {{ user.email|e('js') }}




суббота, 29 октября 11 г.
Twig, что за ...?




          {% autoescape true %}
             Everything will be automatically
             escaped in this block
          {% endautoescape %}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Макросы




суббота, 29 октября 11 г.
Twig, что за ...?




          {% macro input(name, value, type, size) %}
              <input type="{{ type|default('text') }}"
              name="{{ name }}" value="{{ value|e }}"
              size="{{ size|default(20) }}" />
          {% endmacro %}




суббота, 29 октября 11 г.
Twig, что за ...?




          {% import "forms.html" as forms %}

          <p>{{ forms.input('username') }}</p>




суббота, 29 октября 11 г.
Twig, что за ...?




                            Кастомизация




суббота, 29 октября 11 г.
Twig, что за ...?




                       Каждый элемент в twig
                          это extensions




суббота, 29 октября 11 г.
Twig, что за ...?




                       фильтры
                       функции
                      операторы
                    кастомные теги
                операторы тестирования

суббота, 29 октября 11 г.
Twig, что за ...?




                          extensions замены
                         почтового адреса на
                        кликабельную версию



суббота, 29 октября 11 г.
Twig, что за ...?



  namespace RopacGalleryBundleExtension;

  class RopacExtension extends Twig_Extension
  {
      public function getFilters()
      {
          return array(
              'emailize' =>
                  new Twig_Filter_Method($this, 'emailize')
          );
      }

            public function getName()
            {
                return 'ropac_extension';
            }
  }


суббота, 29 октября 11 г.
Twig, что за ...?




                            config.yml или services.yml

        services:
            twig.extension.ropac:
                class: RopacGalleryBundleExtension
        RopacExtension
                tags:
                    - { name: twig.extension }




суббота, 29 октября 11 г.
Twig, что за ...?


  namespace RopacGalleryBundleExtension;

  class RopacExtension extends Twig_Extension
  {
      ...

      /**
        * Transfom emails into clickable mailto links
        * @param string $text
        * @return string
        */
      public function emailize($text)
      {
           return preg_replace('/([w.!#$%-+.]+@[A-Za-z0-9-]+(.
  [A-Za-z0-9-]+)+)/', '<a href="mailto:1">1</a>', $text);
      }

            ...
  }

суббота, 29 октября 11 г.
Twig, что за ...?




                  {{ user.email | emailize }}




суббота, 29 октября 11 г.
Twig, что за ...?




                            Модифицировать twig
                                  под себя
                               действительно
                                   просто


суббота, 29 октября 11 г.
Twig, что за ...?




                            Производительность



суббота, 29 октября 11 г.
Twig, что за ...?




                       Каждый шаблон
                    собирается в php object




суббота, 29 октября 11 г.
Twig, что за ...?




                              Один раз после
                            изменения шаблона




суббота, 29 октября 11 г.
Twig, что за ...?




                            По-этому быстр




суббота, 29 октября 11 г.
Twig, что за ...?




                                     и да
                             smarty 3.x быстрее
                                       а
                            nativ php еще быстрее
                             http://habrahabr.ru/blogs/php/128083/


суббота, 29 октября 11 г.
Twig, что за ...?




                            Но,




суббота, 29 октября 11 г.
Twig, что за ...?




                            twig моложе




суббота, 29 октября 11 г.
Twig, что за ...?




                            затраты на железо
                              в разы меньше,
                               чем на людей



суббота, 29 октября 11 г.
Twig, что за ...?




                            Темная сторона




суббота, 29 октября 11 г.
Twig, что за ...?




                          Используем twig
                       как шаблонизатор для
                          генерации кода



суббота, 29 октября 11 г.
Twig, что за ...?




                            Doctrine 2
                            Symfony 2




суббота, 29 октября 11 г.
Twig, что за ...?


                            Ложные ожидания




         http://david.heinemeierhansson.com/arc/000405.html


суббота, 29 октября 11 г.
Twig, что за ...?




                            native php




суббота, 29 октября 11 г.
Twig, что за ...?



                                      +
                            Templating component




суббота, 29 октября 11 г.
Twig, что за ...?




                            мы уже имеем
                              • layouts
                              • наследование
                              • слоты
                              • хелперы


суббота, 29 октября 11 г.
Twig, что за ...?




                            Что выбрать?




суббота, 29 октября 11 г.
Twig, что за ...?




                            Решать ВАМ!




суббота, 29 октября 11 г.
Twig, что за ...?




                            Еще есть вопросы?




суббота, 29 октября 11 г.
Twig, что за ...?




                            Alex Demchenko
                              http://451f.com.ua
                              http://lazy-ants.de




суббота, 29 октября 11 г.

Más contenido relacionado

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Twig, что за..

  • 1. Twig, что за ...? Alex Demchenko alex@lazy-ants.de суббота, 29 октября 11 г.
  • 2. Twig, что за ...? Покурим? суббота, 29 октября 11 г.
  • 3. Twig, что за ...? template engine & templating language суббота, 29 октября 11 г.
  • 4. Twig, что за ...? symfony 2 templating layer суббота, 29 октября 11 г.
  • 5. Twig, что за ...? template engine twig php smarty суббота, 29 октября 11 г.
  • 6. Twig, что за ...? /** * This engine knows how to render Twig templates. * * @author Fabien Potencier <fabien@symfony.com> */ class TwigEngine implements EngineInterface https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/TwigBundle/TwigEngine.php#L20 суббота, 29 октября 11 г.
  • 7. Twig, что за ...? templating language twig php smarty суббота, 29 октября 11 г.
  • 8. Twig, что за ...? как отключить? суббота, 29 октября 11 г.
  • 9. Twig, что за ...? # app/config/config.yml framework: # ... templating: { engines: ['twig', 'php'] } http://symfony.com/doc/current/cookbook/templating/PHP.html суббота, 29 октября 11 г.
  • 10. Twig, что за ...? index.html.php суббота, 29 октября 11 г.
  • 11. Twig, что за ...? Подключить к любому проекту суббота, 29 октября 11 г.
  • 12. Twig, что за ...? require_once '/path/to/lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '/path/to/compilation_cache', )); echo $twig->render('index.html', array('twitter' => '#sfcampua')); суббота, 29 октября 11 г.
  • 13. Twig, что за ...? {% extends "layout.html" %} {% block content %} Symfony Camp UA twitter hash {{ twitter }}! {% endblock %} суббота, 29 октября 11 г.
  • 14. Twig, что за ...? Основная задача любого шаблонизатора упростить работу с шаблонами суббота, 29 октября 11 г.
  • 15. Twig, что за ...? •Простой синтаксис •Безопасность •Наследование •Хелперы •Sandbox •... суббота, 29 октября 11 г.
  • 16. Twig, что за ...? {# ... #} комментарии {% ... %} блоки {{ ... }} отображение суббота, 29 октября 11 г.
  • 17. Twig, что за ...? {% if user is defined %} !! Привет {{ user.name }} !! сейчас {{ ‘now’ | date(‘d.m.Y’) }} {% endif %} суббота, 29 октября 11 г.
  • 18. Twig, что за ...? Вывод переменных суббота, 29 октября 11 г.
  • 19. Twig, что за ...? ! ! Привет {{ user.name }} отличное {{ photo }} суббота, 29 октября 11 г.
  • 20. Twig, что за ...? Выполнение чего-либо суббота, 29 октября 11 г.
  • 21. Twig, что за ...? {% if user is defined %} ! ! ... {% endif %} суббота, 29 октября 11 г.
  • 22. Twig, что за ...? {% spaceless %} <ul> <li> <a ... >XXX</a> </li> <li> ... {% endspaceless %} суббота, 29 октября 11 г.
  • 23. Twig, что за ...? <ul><li><a ... >XXX</a></li><li>... суббота, 29 октября 11 г.
  • 24. Twig, что за ...? set if ... else for include block суббота, 29 октября 11 г.
  • 25. Twig, что за ...? Комментарии игнорируются {# if user is defined #} {#!! ... endif #} суббота, 29 октября 11 г.
  • 26. Twig, что за ...? установка и отображение переменных суббота, 29 октября 11 г.
  • 27. Twig, что за ...? {% set foo = 'foo' %} {{ foo }} {% set foo = [1, 2] %} {{ foo.0 }} {% set foo = {'foo': 'bar'} %} {{ foo.bar }} суббота, 29 октября 11 г.
  • 28. Twig, что за ...? массивы и хеши суббота, 29 октября 11 г.
  • 29. Twig, что за ...? array, [] {% for list in ['one', 'two'] %} ... {% endfor %} суббота, 29 октября 11 г.
  • 30. Twig, что за ...? hash, {} {% for key, val in {'en': 'US', 'de': 'DE'} %} ... {% endfor %} суббота, 29 октября 11 г.
  • 31. Twig, что за ...? Операторы суббота, 29 октября 11 г.
  • 32. Twig, что за ...? {{ 1 + 2 }} {{ 'con'~'cat' }} {% for i in 'a'..'z' %} {{ i }} {% endfor %} суббота, 29 октября 11 г.
  • 33. Twig, что за ...? Фильтры суббота, 29 октября 11 г.
  • 34. Twig, что за ...? Привет {{ user.name | upper }} суббота, 29 октября 11 г.
  • 35. Twig, что за ...? сейчас {{ ‘now’ | date(‘d.m.Y’) }} суббота, 29 октября 11 г.
  • 36. Twig, что за ...? {{ list | join(‘,’) }} суббота, 29 октября 11 г.
  • 37. Twig, что за ...? {{ title | striptags | upper }} суббота, 29 октября 11 г.
  • 38. Twig, что за ...? Функции суббота, 29 октября 11 г.
  • 39. Twig, что за ...? range(0, 3) {% for i in range(0, 3) %} {{ i }}, {% endfor %} суббота, 29 октября 11 г.
  • 40. Twig, что за ...? Наследование суббота, 29 октября 11 г.
  • 41. Twig, что за ...? {% extends 'RopacGalleryFrontendBundle::layout.html.twig' %} {% block page_class %} page_artist_news {% endblock %} {% block mobile_menu %} {% include 'RopacGalleryFrontendBundle:Artist:mobile_menu.html.twig' with {'active': 'news'} %} {% endblock %} {% block content %} <article class="artist"> <header class="artist_news_header"> <h1>{{artist.firstname}} <strong>{{artist.lastname}}</strong></h1> </header> {% include 'RopacGalleryFrontendBundle:Artist:submenu.html.twig' with {'artist': artist, 'active': 'news'} %} {% include 'RopacGalleryFrontendBundle:News:list.html.twig' with {'news': news} %} </article> {{ parent() }} {% endblock %} суббота, 29 октября 11 г.
  • 42. Twig, что за ...? Экранирование суббота, 29 октября 11 г.
  • 43. Twig, что за ...? {{ user.name|e }} {{ user.email|e('js') }} суббота, 29 октября 11 г.
  • 44. Twig, что за ...? {% autoescape true %} Everything will be automatically escaped in this block {% endautoescape %} суббота, 29 октября 11 г.
  • 45. Twig, что за ...? Макросы суббота, 29 октября 11 г.
  • 46. Twig, что за ...? {% macro input(name, value, type, size) %} <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" /> {% endmacro %} суббота, 29 октября 11 г.
  • 47. Twig, что за ...? {% import "forms.html" as forms %} <p>{{ forms.input('username') }}</p> суббота, 29 октября 11 г.
  • 48. Twig, что за ...? Кастомизация суббота, 29 октября 11 г.
  • 49. Twig, что за ...? Каждый элемент в twig это extensions суббота, 29 октября 11 г.
  • 50. Twig, что за ...? фильтры функции операторы кастомные теги операторы тестирования суббота, 29 октября 11 г.
  • 51. Twig, что за ...? extensions замены почтового адреса на кликабельную версию суббота, 29 октября 11 г.
  • 52. Twig, что за ...? namespace RopacGalleryBundleExtension; class RopacExtension extends Twig_Extension { public function getFilters() { return array( 'emailize' => new Twig_Filter_Method($this, 'emailize') ); } public function getName() { return 'ropac_extension'; } } суббота, 29 октября 11 г.
  • 53. Twig, что за ...? config.yml или services.yml services: twig.extension.ropac: class: RopacGalleryBundleExtension RopacExtension tags: - { name: twig.extension } суббота, 29 октября 11 г.
  • 54. Twig, что за ...? namespace RopacGalleryBundleExtension; class RopacExtension extends Twig_Extension { ... /** * Transfom emails into clickable mailto links * @param string $text * @return string */ public function emailize($text) { return preg_replace('/([w.!#$%-+.]+@[A-Za-z0-9-]+(. [A-Za-z0-9-]+)+)/', '<a href="mailto:1">1</a>', $text); } ... } суббота, 29 октября 11 г.
  • 55. Twig, что за ...? {{ user.email | emailize }} суббота, 29 октября 11 г.
  • 56. Twig, что за ...? Модифицировать twig под себя действительно просто суббота, 29 октября 11 г.
  • 57. Twig, что за ...? Производительность суббота, 29 октября 11 г.
  • 58. Twig, что за ...? Каждый шаблон собирается в php object суббота, 29 октября 11 г.
  • 59. Twig, что за ...? Один раз после изменения шаблона суббота, 29 октября 11 г.
  • 60. Twig, что за ...? По-этому быстр суббота, 29 октября 11 г.
  • 61. Twig, что за ...? и да smarty 3.x быстрее а nativ php еще быстрее http://habrahabr.ru/blogs/php/128083/ суббота, 29 октября 11 г.
  • 62. Twig, что за ...? Но, суббота, 29 октября 11 г.
  • 63. Twig, что за ...? twig моложе суббота, 29 октября 11 г.
  • 64. Twig, что за ...? затраты на железо в разы меньше, чем на людей суббота, 29 октября 11 г.
  • 65. Twig, что за ...? Темная сторона суббота, 29 октября 11 г.
  • 66. Twig, что за ...? Используем twig как шаблонизатор для генерации кода суббота, 29 октября 11 г.
  • 67. Twig, что за ...? Doctrine 2 Symfony 2 суббота, 29 октября 11 г.
  • 68. Twig, что за ...? Ложные ожидания http://david.heinemeierhansson.com/arc/000405.html суббота, 29 октября 11 г.
  • 69. Twig, что за ...? native php суббота, 29 октября 11 г.
  • 70. Twig, что за ...? + Templating component суббота, 29 октября 11 г.
  • 71. Twig, что за ...? мы уже имеем • layouts • наследование • слоты • хелперы суббота, 29 октября 11 г.
  • 72. Twig, что за ...? Что выбрать? суббота, 29 октября 11 г.
  • 73. Twig, что за ...? Решать ВАМ! суббота, 29 октября 11 г.
  • 74. Twig, что за ...? Еще есть вопросы? суббота, 29 октября 11 г.
  • 75. Twig, что за ...? Alex Demchenko http://451f.com.ua http://lazy-ants.de суббота, 29 октября 11 г.