@Template

Usando

La anotación @Template asocia un controlador con un nombre de plantilla:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

/**
 * @Template("SensioBlogBundle:Post:show.html.twig")
 */
public function showAction($id)
{
    // consigue el Post
    $post = ...;

    return array('post' => $post);
}

Cuando utilizas la anotación @Template, el controlador debe regresar un arreglo de parámetros para pasarlo a la vista en lugar de un objeto Respuesta.

Truco

Si la acción devuelve un objeto Respuesta, la anotación @Template simplemente se omite.

Si la plantilla se nombra después del controlador y los nombres de acción, como en el caso del ejemplo anterior, puedes omitir incluso el valor de la anotación:

/**
 * @Template
 */
public function showAction($id)
{
    // consigue el Post
    $post = ...;

    return array('post' => $post);
}

Nota

Si estás utilizando PHP como tu sistema de plantillas, necesitas hacerlo explícito:

/**
 * @Template(engine="php")
 */
public function showAction($id)
{
    // ...
}

Y si los únicos parámetros para pasar a la plantilla son los argumentos del método, puedes utilizar el atributo vars en lugar de devolver un arreglo. Esto es muy útil en combinación con la anotación @ParamConverter:

/**
 * @ParamConverter("post", class="SensioBlogBundle:Post")
 * @Template("SensioBlogBundle:Post:show.html.twig", vars={"post"})
 */
public function showAction(Post $post)
{
}

que, gracias a las convenciones, es equivalente a la siguiente configuración:

/**
 * @Template(vars={"post"})
 */
public function showAction(Post $post)
{
}

Puedes hacer que sea aún más conciso puesto que todos los argumentos del método se pasan automáticamente a la plantilla si el método devuelve null y no se define el atributo vars:

/**
 * @Template
 */
public function showAction(Post $post)
{
}
Bifúrcame en GitHub