Bien le bonjour à vous,
Après recherche chez Google ainsi que dans le forum dédié ici, je ne puis résoudre un souci complètement bloquant.
Afin de séparer les métiers et les interfaces d'administration, l'affichage d'un twig s'effectue ainsi : si en base le champs "leTemplate" est NULL alors je pioche dans Resources/views/LeController/leTemplate.html.twig sinon je récupère le html twiggé depuis la base.
Le test opéré comporte le même twig pour la base et pour le fichier.
Celui-ci contient un formulaire avec les méthodes associées (form_errors, form_label, ...) [cf Annexe 1].
Lorsque l'on pioche dans le fichier Twig pas de souci, il s'affiche bien.
Malheureusement, lorsque l'on récupère le code html depuis la base, j'ai ce message :
D'une part la ligne 19 représente {{ form_errors(form) }}, comment se fait-il qu'il provoque une erreur avant la ligne 1 avec {% form_theme form 'LeBundle:Form:fields.html.twig' %} ?Template "form_div_layout.html.twig" is not defined in inscription at line 19.
D'autre part, j'ai également essayé sans le form_theme mais le résultat est le même. La méthode render() ferait-elle plus de choses que la simple incorporation de fichier twig ?
En sommes, l'ensemble de l'application est basé sur ce procédé de saisie de twig par l'intermédiaire de l'éditeur ace. Auriez-vous une piste de résolution ?
Agréable journée à vous tout en vous remerciant d'avance.
Cordialement,
--------------------------------------
Annexe 1 : Code du formulaire twiggé
--------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 {% form_theme form 'LeBundle:Form:fields.html.twig' %} {% if formPostedSuccess %} <div id="ResultForm"> <div id="ResultFormMessage"> {% trans %}Votre inscription a bien été prise en compte.{% endtrans %} </div> </div> {% else %} <form action='{{ PHP_SELF }}' method='post'> <fieldset class='formInscription'> <legend class='formInscription_header'> {% trans %}Inscription{% endtrans %} </legend> <!-- Les erreurs générales du formulaire. --> {{ form_errors(form) }} <div class='formInscription_table'> <div class='formInscription_tableRow'> <h4 class='formInscription_tableCell'> <!-- Génération du label. --> {{ form_label(form.email, "Email"|trans) }} : </h4> <div class='formInscription_tableCell'> <!-- Affichage des erreurs pour ce champ précis. --> {{ form_errors(form.email) }} <!-- Génération du champs. --> {{ form_widget(form.email) }} </div> </div> {# ... #} <div class='ModuleSM_formInscription_tableRow'> <h4 class='ModuleSM_formInscription_tableCell'> </h4> <div class='ModuleSM_formInscription_tableCell'> <input type='submit' value="{% trans %}Inscription{% endtrans %}" /> </div> </div> </div> </fieldset> {{ form_rest(form) }} </form> {% endif %}
Annexe 2 : Code PHP de l'appel au template depuis la base ou le fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 $Culture = $repository->findOneBy(array('clientid' => $clientId, 'cultureid' => $currentCulture)); if($Culture === null) { $InscriptionContentTemplate = $this->render('LeBundle:LeController:LeTemplate.hmtl.twig', $paramsTemplate); } else { $InscriptionContentTemplate = $Culture->getTemplate(); } $loaderFromBdd = new \Twig_Loader_Array(array( 'inscription' => $InscriptionContentTemplate )); $loader = $twig->getLoader(); $twig->setLoader($loaderFromBdd); $template = $twig->loadTemplate('inscription'); try { $renderedContent = $template->render($paramsTemplate); } catch(\Exception $e) { $twig->setLoader($loader); throw $e; } $twig->setLoader($loader); return new Response($renderedContent);
Partager