Преглед на файлове

merge template index.tpl

me@helium преди 8 години
родител
ревизия
4c58ed560c
променени са 1 файла, в които са добавени 60 реда и са изтрити 12 реда
  1. 60 12
      TemplateEngine.md

+ 60 - 12
TemplateEngine.md

@@ -16,7 +16,7 @@ GET / HTTP/1.1
 Host: example.com
 Accept: text/html
  
-<пустая строка>
+
 ```
 
 Ответ:
@@ -62,7 +62,7 @@ Set-Cookie: key=LongAndWeirdRandomSecureCharset
 </html>
 ```
 
-    Обратите внимание на заголовок **Set-Cookie**. Именно он в себе хранит уникальный ключ, который будет запомнен браузером
+Обратите внимание на заголовок **Set-Cookie**. Именно он в себе хранит уникальный ключ, который будет запомнен браузером
 - Браузер при каждом запросе к серверу отсылает ему этот ключ, подтверждая таким образом, что данное соединение - от конкретного пользователя.
 
 ```
@@ -117,7 +117,7 @@ echo $_SESSION['counter'];
 
 ## Шаблонизация, PHP, MVC, и Формы
 
-**PHP** изначально создавался как более продвинутый механизм для реализации **SSI** - **Server-Side-Include**, то есть вставка тех или иных динамических данных в статичный (по изначальной задумке) **HTML**. В старых 
+**PHP** изначально создавался как более продвинутый механизм для реализации **SSI** - **Server Side Include**, то есть вставка тех или иных динамических данных в статичный (по изначальной задумке) **HTML**. В старых 
 версиях **PHP** синтаксис подобных вставок был более минималистичен и удобен, чем в современных версиях.
 
 ### Исторический экскурс
@@ -131,8 +131,8 @@ echo $_SESSION['counter'];
 
 ### Шаблонно-ориентированные управляющие конструкции
 
-Отыскивать парные фигурные скобки не очень удобно в коде с преобладанием **HTML**, поэтому **PHP** имеет не только обычный Си-образный синтаксис для *if*, *while*, *for*, *foreach* и *switch*. 
-В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на *endif;*, *endwhile;*, *endfor;*, *endforeach;* или *endswitch;* соответственно.
+Отыскивать парные фигурные скобки не очень удобно в коде с преобладанием **HTML**, поэтому **PHP** имеет не только обычный Си-образный синтаксис для `if`, `while`, `for`, `foreach` и `switch`. 
+В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на `endif;`, `endwhile;`, `endfor;`, `endforeach;` или `endswitch;` соответственно.
 
 ```php
 <?php if ($a == 5): ?>
@@ -216,23 +216,71 @@ $twig = new Twig_Environment($loader, array(
     'cache' => '/path/to/compilation_cache',
 ));
 
-echo $twig->render('index', array('name' => 'Vasiliy'));
+echo $twig->render('index.tpl', array('url' => 'http://google.com',
+                                  'urlText' => 'Гугл'));
 ```
 
 или
 
 ```php
-require_once '/path/to/lib/Twig/Autoloader.php';
+require_once '/usr/share/php/Twig/Autoloader.php';
 Twig_Autoloader::register();
-$loader = new Twig_Loader_Filesystem('/path/to/templates');
+$loader = new Twig_Loader_Filesystem('templates/');
 $twig = new Twig_Environment($loader, array(
-    'cache' => '/path/to/compilation_cache',
-));
-echo $twig->render('index.html', array('name' => 'Fabien'));
+			'cache' => '/tmp/',
+			));
+
+echo $twig->render('index.tpl', array('url' => 'http://google.com',
+			'urlText' => 'Гугл'));
 ```
 
 ### Переменные
 
+Переменные в шаблонах заключаются в двойные фигурные скобки. 
+
+```jinja
+<html>
+<a href="{{ url }}">{{ urlText }}</a>
+</html>
+```
+
+Не имеет значения, как обращаться к полям ассоциативных массивов:
 ```jinja
-<a href="{{ url }}">{{ urlText}}</a>
+<html>
+<a href="{{ url['href'] }}">{{ url.title }}</a>
+</html>
 ```
+
+Можно обратиться полю с помощью функции attribute:
+
+```jinja
+{# equivalent to the non-working foo.data-foo #}
+{# Комментарии заключаются в фигурную скобки и решетки #}
+{{ attribute(foo, 'data-foo') }}
+```
+
+### Управляющие конструкции
+
+Управляющие конструкции заключаются в {% и %}: 
+```jinja
+<h2>Время логинoв:</h2>
+<ul>
+    {% for time in times %}
+        <li>{{ time|date('d/m/Y H:i') }}</li>
+    {% endfor %}
+</ul>
+```
+
+В данном примере происходит циклический вывод массива врёмен логинов. `date` - фильтр, который используется для форматирования строки с датой и временем.
+
+```jinja
+{% if not logged %}
+    <div class='error'>Вы не залогинены!</div>
+{% else %}
+    <div class='info'>Добро пожаловать, {{ username }}!</div>
+{% endif %}
+```
+
+Больше информации о [Twig](http://twig.sensiolabs.org/documentation)
+
+## Домашнее задание