Superposición del sitio

Crear un controlador con plantilla TWIG en Symfony 4

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»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *