[Symfony 2] parser 2 fois un template

Eléphant du PHP | 353 Messages

03 oct. 2012, 09:33

Bonjour,

J'affiche des articles (stockés sous forme de fichiers xml) sur une page en faisant des transformations xsl. Mon problème est de pouvoir utiliser le routing de symfony dans mes feuilles de styles xslt. J'ai essayé d'utiliser registerPHPFunctions mais ça ne fonctionne pas vraiment comme je voudrais car je n'ai alors pas le contexte. Les liens à construire dépendent évidemment de paramètres contenu dans le fichier xml ; sinon il suffirait de passer le lien en argument de la feuille de style xslt.

Voici la sortie que j'ai :
<p><a href="mon_lien_a_construire">Le libéllé du lien</a> le contenu du paragraphe.</p>
Je peux aussi générer ça :
<p><a href="{{path('article_show'', {'id': 'id_dans_xml'}}">Le libéllé du lien</a> le contenu du paragraphe.</p>
Mais pour avoir ce que je veux en sortie il faudrait pouvoir reparser ce contenu dans le même contexte avant de l'envoyer à la vue.
Le titre n'est pas forcément très bon mais reflète tout de même ce que je cherche à faire. Je cherche surtout une bonne idée ou à défaut une manière propre de faire les choses.

Merci d'avance pour toute idée, toute aide, tout lien pouvant m'aider.

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2012, 16:44

Je ne connais pas grand chose à Symfony mais cela m'étonnerai que tu ne puisses utiliser le module de Route dans ton Contrôleur.
Et donc avec cela tu enverrais dans le template directement l'url que tu veux.

Eléphant du PHP | 353 Messages

03 oct. 2012, 20:27

Je ne connais pas grand chose à Symfony mais cela m'étonnerai que tu ne puisses utiliser le module de Route dans ton Contrôleur.
Et donc avec cela tu enverrais dans le template directement l'url que tu veux.
Merci tout d'abord de ta réponse mais tu as lu trop vite ! Je peux bien évidemment générer mon url dans le contrôleur mais le problème est que ma route dépend de paramètres qui sont dans le fichier xml.

Je pense que je suis pas très loin de la solution. Je suis en train de faire un bundle qui permet d'utiliser une chaîne de caractères au lieu d'un fichier comme template, en me basant sur Twig_Loader_String. J'ai un problème pour ajouter les extensions mais je vais finir par trouver.

ViPHP
xTG
ViPHP | 7331 Messages

05 oct. 2012, 11:23

Beh je comprends pas plus, tu parses bien ton XML dans le contrôleur et non dans la vue ?
Auquel cas rien ne t'empêches de récupérer les urls (ou infos pour les former).

Eléphant du PHP | 353 Messages

05 oct. 2012, 12:10

Beh je comprends pas plus, tu parses bien ton XML dans le contrôleur et non dans la vue ?
Auquel cas rien ne t'empêches de récupérer les urls (ou infos pour les former).
Je parse effectivement le xml dans le contrôleur pour générer un morceau de html. Dans ce morceau de html, j'ai éventuellement un lien vers un autre article, avec un pattern du genre /article/article_id. Li'dentifiant de l'article est contenu dans le fichier xml.
Je pourrais générer mon lien en passant /article/ à la feuille de style xsl mais la forme de mes urls serait "configurée" à deux endroits. De plus en dev, je n'ai pas d'extension, en prod j'ai un .html derrière !

Petit nouveau ! | 2 Messages

17 juil. 2013, 16:45

Bonjour à tous,

Désolé de déterrer ce sujet mais je suis face au même problème et je ne sais pas comment procéder. Nicolas, pourrais-tu m'indiquer comment tu as fait?
Mon problème est que j'ai parsé mon xml pour le transformer en html. Dans ce fichier html, j'ai plein de liens vers des chapitres et j'aimerai que symfony puisse avoir accès à ces liens pour générer automatiquement mes pages et garder le contexte, sans devoir créer une route et un template pour chaque page.

Merci pour votre aide.

Eléphant du PHP | 353 Messages

10 août 2013, 13:26

Bonjour à tous,

Désolé de déterrer ce sujet mais je suis face au même problème et je ne sais pas comment procéder. Nicolas, pourrais-tu m'indiquer comment tu as fait?
Mon problème est que j'ai parsé mon xml pour le transformer en html. Dans ce fichier html, j'ai plein de liens vers des chapitres et j'aimerai que symfony puisse avoir accès à ces liens pour générer automatiquement mes pages et garder le contexte, sans devoir créer une route et un template pour chaque page.

Merci pour votre aide.
Je transforme mon xml en html avec des feuilles de styles xsl. Je génère des liens (url ou chemins vers des images) en xsl de la forme {{path('ma_route', {param1:'value1',param2:'value2'})}}. Dans mon html j'ai donc ces liens. Au lieu d'envoyer ce html directement, je le passe à twig sous forme de chaîne au lieu d'un template sur disque en utilisant le StringLoader au lieu du FileLoader :
http://twig.sensiolabs.org/doc/api.html ... der-string

Si ce n'est pas clair ou s'il te manque quelque chose, n'hésite pas à me relancer.

Petit nouveau ! | 2 Messages

20 août 2013, 14:58

Bonjour à tous,

Désolé de déterrer ce sujet mais je suis face au même problème et je ne sais pas comment procéder. Nicolas, pourrais-tu m'indiquer comment tu as fait?
Mon problème est que j'ai parsé mon xml pour le transformer en html. Dans ce fichier html, j'ai plein de liens vers des chapitres et j'aimerai que symfony puisse avoir accès à ces liens pour générer automatiquement mes pages et garder le contexte, sans devoir créer une route et un template pour chaque page.

Merci pour votre aide.
Je transforme mon xml en html avec des feuilles de styles xsl. Je génère des liens (url ou chemins vers des images) en xsl de la forme {{path('ma_route', {param1:'value1',param2:'value2'})}}. Dans mon html j'ai donc ces liens. Au lieu d'envoyer ce html directement, je le passe à twig sous forme de chaîne au lieu d'un template sur disque en utilisant le StringLoader au lieu du FileLoader :
http://twig.sensiolabs.org/doc/api.html ... der-string

Si ce n'est pas clair ou s'il te manque quelque chose, n'hésite pas à me relancer.

Ok , merci pour ta réponse