Si vemos la estructura de nuestro proyecto en el directorio template podemos ver solo un archivo llamado base.html.twig, al generar un controlador con plantilla utilizando la herramienta bin/console este no solo genera la clase y su método controlador en la carpeta /src/controller sino que además crea una carpeta con el nombre de la clase y un archivo TWIG templates/default/index.html.twig.
php bin/console make:controller
Clase /src/Controller/DefaultController.php
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends AbstractController
{
/**
* @Route("/default", name="default")
*/
public function index()
{
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
}
AbstractController nos brinda acceso a un método llamado render() que renderiza una plantilla que se encuentra en el archivo templates/default/index.html.twig y sus argumentos pasados en un array, eso si los argumentos son llamados con la clave de cada elemento del array a través de TWIG, al final se generará el código HTML que se devuelve al usuario.
Plantilla templates/default/index.html.twig.
{% extends 'base.html.twig' %}
{% block title %}Hello DefaultController!{% endblock %}
{% block body %}
<style>
.example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; }
.example-wrapper code { background: #F5F5F5; padding: 2px 6px; }
</style>
<div class="example-wrapper">
<h1>Hello {{ controller_name }}! ✅</h1>
This friendly message is coming from:
<ul>
<li>Your controller at <code><a href="{{ 'C:/xampp/htdocs/ejemplo/src/Controller/DefaultController.php'|file_link(0) }}">src/Controller/DefaultController.php</a></code></li>
<li>Your template at <code><a href="{{ 'C:/xampp/htdocs/ejemplo/templates/default/index.html.twig'|file_link(0) }}">templates/default/index.html.twig</a></code></li>
</ul>
</div>
{% endblock %}
1 comentario en «Crear un controlador con plantilla TWIG en Symfony 4»