30. Twig vs. PHP
for - foreach
{% for number in 1..10 %}
* {{ number }}
{% endfor %}
{% for item in items %}
* {{ item.name }}
{% endfor %}
Monday, September 16, 13
31. Twig vs. PHP
for - foreach
{% for item in items %}
{{ loop.index }} {{ item.name }}
{% endfor %}
loop.index
loop.first
loop.length
loop.revindex
loop.last
loop.parent
Monday, September 16, 13
32. Twig vs. PHP
if
{% if condicion %}
Si
{% elseif condicion2 %}
Puede ser...
{% else %}
No
{% endif %}
Monday, September 16, 13
33. Twig vs. PHP
include - require
{% include “template.html” %}
{% include “template.html” with {“foo”: “bar”} %}
{% include “template.html” only %}
{% include “template.html” ignore missing %}
{% include [“template.html”, “template2.html”] %}
Monday, September 16, 13
34. Twig vs. PHP
function
{% macro saludo(nombre, apellido) %}
<div>Hola {{ nombre }} {{ apellido }}</div>
{% endmacro %}
Monday, September 16, 13
35. Twig vs. PHP
function
{% macro saludo(nombre, apellido) %}
<div>Hola {{ nombre }} {{ apellido }}</div>
{% endmacro %}
{% import "macros.html" as macros %}
Monday, September 16, 13
41. Uso básico
Loaders
$loader = new Twig_Loader_Filesystem($dir);
$loader = new Twig_Loader_Filesystem(array(
$dir1, $dir2
));
$twig = new Twig_Environment($loader, $options);
Monday, September 16, 13
42. Uso básico
Loaders
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader, $options);
$twig->render(“Hola {{ nombre }}”, array(
“nombre” => “Ismael”
));
Monday, September 16, 13
43. Uso básico
Loaders
$loader = new Twig_Loader_Array(array(
“template1.html” => “Hello {{ name }}”,
“template2.html” => “Hola {{ nombre }}”
));
$twig = new Twig_Environment($loader, $options);
Monday, September 16, 13
46. Extendiendo Twig
Extensiones
• Twig_Extension_Core:Agrega todas las funcionalidades principales de Twig
• Twig_Extension_Escaper:Agrega funcionalidades de escape de salida
• Twig_Extension_Sandbox: Habilita el modo sandbox
• Twig_Extension_Optimizer: Optimiza el Árbol abstracto de sintaxis
Monday, September 16, 13
47. $twig = new Twig_Environment($loader, $options);
$twig->addExtension(new Extension());
Extendiendo Twig
Extensiones
Monday, September 16, 13
48. class Mi_Extension extends Twig_Extension
{
function getFilters() {}
function getTests() {}
function getFunctions() {}
function getGlobals() {}
function getName() {}
}
Extendiendo Twig
Monday, September 16, 13
49. class Mi_Extension extends Twig_Extension
{
public function getFilters() {
return array(
new Twig_SimpleFilter(“json”, “json_encode”),
“metodo” => new Twig_Filter_Method($this, “miMetodo”)
);
}
public function miMetodo() {
// ...
}
}
Extendiendo Twig
Filtros
Monday, September 16, 13
50. class Mi_Extension extends Twig_Extension
{
public function getTests() {
return array(
“numero” => new Twig_Test_Method($this, “esNumero”)
);
}
public function esNumero($valor) {
return is_numeric($valor);
}
}
Extendiendo Twig
Tests
Monday, September 16, 13
51. class Mi_Extension extends Twig_Extension
{
public function getFunctions() {
return array(
new Twig_SimpleFunction(“dump”, “var_dump”),
“funcion” => new Twig_Function_Method($this, “miMetodo”)
);
}
public function miMetodo() {
// ...
}
}
Extendiendo Twig
Funciones
Monday, September 16, 13
52. class Mi_Extension extends Twig_Extension
{
public function getGlobals() {
return array(
“nombre” => “Ismael”,
“apellido” => “Ambrosi”
);
}
}
Extendiendo Twig
Globals
Monday, September 16, 13