2011-11-18 10 views
14

plantillas PHP que puedo usar las funciones de PHP, por ejemplo:¿Usar la función de PHP en TWIG? En

foreach ($users as $user){ 
    echo someFunction($user->getName()); 
} 

¿Cómo puedo hacerlo en RAMITA?

{% for user in users %} 
    * {{ user.name }} 
{% else %} 
    No user have been found. 
{% endfor %} 

¿Cómo puedo lograr esto?

Respuesta

12

Lo que necesita es functions o filters. Puede agregarlos fácilmente usando los ejemplos.

+2

¿Podría incluir un poco de detalles sobre la implementación? ¿La función y la creación de instancias de la clase "Twig_Environment" deben incluirse en el controlador? ¿Debería pasar el objeto "$ twig = new Twig_Environment ($ loader)" como una variable (por ejemplo, 'twig' => $ twig) a la plantilla renderizada? Qué debería incluirse en "/ ruta/a/plantillas" en la definición "$ loader = new Twig_Loader_Filesystem ('/ ruta/a/plantillas');". ¿Esa es la ruta a las plantillas en mi paquete? ¿necesita ser absoluto? No funciona para mi Un ejemplo sería muy apreciado ... – RayOnAir

+0

Para cualquiera que venga aquí y quiere un ejemplo, hay un ejemplo muy bueno y simple en la documentación de Twig en sensiolabs: http://twig.sensiolabs.org/docnced.html# funciones – h00ligan

9
// $twig is a Twig_Environment instance. 

$twig->registerUndefinedFunctionCallback(function($name) { 
    if (function_exists($name)) { 
     return new Twig_SimpleFunction($name, function() use($name) { 
      return call_user_func_array($name, func_get_args()); 
     }); 
     return false; 
    } 
}); 

En una plantilla ramita:

{{ explode(",", "It's raining, cats and dogs.").0 | raw }} 

Esta es la salida "Está lloviendo". Por defecto, los valores devueltos se escapan en Twig.

Twig_SimpleFunction es la clase preferida para usar. Todas las demás clases relacionadas con funciones en Twig están en desuso desde 1.12 (para ser eliminadas en 2.0).

En un controlador de Symfony2:

$twig = $this->get('twig'); 
+0

donde debería estar esto registrado en la aplicación estándar symfony2? – gondo

+0

Nunca se debe usar nunca, ya que es terriblemente inseguro. –

+0

No realmente, de repente no se convierte en wordpress. Pero las plantillas solo deberían representar HTML/Javascript con los datos disponibles. –

1

Ya es una extensión de la ramita que le permite llamar a las funciones de PHP forman sus plantillas Twig como:

Hi, I am unique: {{ uniqid() }}. 

And {{ floor(7.7) }} is floor of 7.7. 

Ver extension repository oficial.

Cuestiones relacionadas