Récupérer la liste des blocs d'un template Twig
Publié le 08/08/2020 • Actualisé le 08/08/2020
Dans ce bout de code, nous allons voir comment récupérer la liste des blocs d'un template Twig. Nous devons passer par le service Twig\Environment. Désolé, je n'ai pas trouvé de lien dans la documentation mais une PR GitHub ou cette fonction a été modifiée.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use Twig\Environment;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*
* @property Environment $twigEnvironment
*/
trait Snippet108Trait
{
public function snippet108(): void
{
$blockNames = $this->twigEnvironment->load('layout.html.twig')->getBlockNames();
var_dump($blockNames);
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Lire la doc Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Twig\Environment;
/**
* @see Snippet108Trait
*/
final class Snippet108Test extends KernelTestCase
{
private Environment $twigEnvironment;
protected function setUp(): void
{
$this->twigEnvironment = self::getContainer()->get(Environment::class);
}
/**
* @see Snippet108Trait::snippet108
*/
public function testSnippet108(): void
{
$blockNames = $this->twigEnvironment->load('layout.html.twig')->getBlockNames();
self::assertCount(14, $blockNames);
}
/**
* Fake test to test tearDown() and tearDownAfterClass().
*/
public function testSnippet108Part2(): void
{
$blockNames = $this->twigEnvironment->load('layout.html.twig')->getBlockNames();
self::assertCount(14, $blockNames);
}
/**
* Executed after each test. It is protected and NOT static.
*
* @see certif/Tests/20210601.txt
*/
protected function tearDown(): void
{
// echo 'tearDown'."\n";
}
/**
* Executed after the last test. It is public AND static.
*/
public static function tearDownAfterClass(): void
{
// echo 'tearDown after class'."\n";
}
}
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉