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 ! 😉
