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»