Commit 86a96dcd authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Possibilité de passer un moteur de template en mode 'debug' (impact dans le...

Possibilité de passer un moteur de template en mode 'debug' (impact dans le moteur twig uniquement pour l'instant).
parent 35c2c119
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ CHANGELOG

7.0.6
-----
- Possibilité de passer un moteur de template en mode 'debug' (impact dans le moteur twig uniquement pour l'instant).
- [FIX] Plantage de TinyMCE à cause du `?php` oublié dans les `extended_valid_elements` : retrait car inutile au moteur par défaut de toute façon. 
- [FIX] Correction de l'affichage des macros dans le Select2 pour le moteur Laminas.

+12 −1
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@ use DoctrineModule\Persistence\ProvidesObjectManager;
use Exception;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Renderer\PhpRenderer;
use Mpdf\MpdfException;
use RuntimeException;
use UnicaenPdf\Exporter\PdfExporter;
use UnicaenRenderer\Entity\Db\Rendu;
@@ -30,6 +29,17 @@ class RenduService

    public PhpRenderer $renderer;

    protected bool $debugMode = false;

    /**
     * Active ou non le mode "debug".
     * NB : ce mode n'est pas forcément implémenté par le moteur de rendu du template.
     */
    public function setDebugMode(bool $debugMode = true): void
    {
        $this->debugMode = $debugMode;
    }

    /** Gestion des entités *******************************************************************************************/

    public function create(Rendu $contenu): Rendu
@@ -124,6 +134,7 @@ class RenduService

        $templateEngine = $this->templateEngineManager->getEngineForTemplate($template);
        $templateEngine->setVariables($variables);
        $templateEngine->setDebugMode($this->debugMode);
        $sujet = $templateEngine->renderTemplateSujet();
        $corps = $templateEngine->renderTemplateCorps();
        $contenu->setSujet($sujet);
+5 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ abstract class AbstractTemplateEngine implements TemplateEngineInterface
    use TemplateAwareTrait;

    protected array $variables = [];
    protected bool $debugMode = false;

    public function setVariables(array $variables): void
    {
@@ -23,5 +24,8 @@ abstract class AbstractTemplateEngine implements TemplateEngineInterface
        $this->variables = array_merge($helperVariables, $variables);
    }


    public function setDebugMode(bool $debugMode = true): void
    {
        $this->debugMode = $debugMode;
    }
}
 No newline at end of file
+9 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@ namespace UnicaenRenderer\Service\TemplateEngine;
use UnicaenRenderer\Entity\Db\Macro;
use UnicaenRenderer\Entity\Db\Template;

/**
 * Interface des moteurs de rendu.
 */
interface TemplateEngineInterface
{
    /**
@@ -17,6 +20,12 @@ interface TemplateEngineInterface
     */
    public function setVariables(array $variables);

    /**
     * Active où non le mode "debug" de ce moteur.
     * En quoi consiste le mode "debug" concrètement ? Ça dépend du moteur !
     */
    public function setDebugMode(bool $debugMode = true): void;

    /**
     * Effectue des vérifications éventuelles concernant le template cible.
     */
+11 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use BadMethodCallException;
use RuntimeException;
use Twig\Environment;
use Twig\Error\Error;
use Twig\Extension\DebugExtension;
use Twig\Loader\ArrayLoader;
use UnicaenRenderer\Entity\Db\Macro;
use UnicaenRenderer\Service\TemplateEngine\AbstractTemplateEngine;
@@ -19,10 +20,20 @@ class TwigTemplateEngine extends AbstractTemplateEngine
    {
        $this->twigLoader = new ArrayLoader();
        $this->twig = new Environment($this->twigLoader, [
            'debug' => true, // NB : aucun impact si DebugExtension n'est pas activée.
//            'cache' => '/path/to/compilation_cache',
        ]);
    }

    public function setDebugMode(bool $debugMode = true): void
    {
        parent::setDebugMode($debugMode);

        if ($this->debugMode) {
            $this->twig->addExtension(new DebugExtension());
        }
    }

    public function checkTemplate(): array
    {
        throw new BadMethodCallException("Non supporté !");