Twig: Noms de blocs dynamiques

Créé le 12 avr. 2011  ·  7Commentaires  ·  Source: twigphp/Twig

L'utilisation de vars pour les noms de bloc ne fonctionne pas.

{% set block_name = "my_block_name" %}

{% bloc nom_bloc %}
un peu de html...
{% bloc final %}

Commentaire le plus utile

Les noms de blocs font partie de la structure du modèle et doivent donc être connus au moment de la compilation.
Les variables ne sont connues qu'à l'exécution.

Tous les 7 commentaires

car block_name représenté par une chaîne 'block_name'

Désolé, vous dites que vous ne pouvez pas avoir de blocs dynamiques avec twig ou que je l'utilise de la mauvaise manière ?

Vous avez raison, pas de noms de blocs dynamiques

Vous ne pouvez pas utiliser de blocs dynamiques. Postez votre cas d'utilisation sur la liste de diffusion des utilisateurs de Twig.

Désolé d'avoir ouvert un cold case ^^. Je pense que j'ai peut-être rencontré un cas d'utilisation qui bénéficierait des noms de blocs dynamiques...

J'utilise Doctrine avec un héritage de table unique (classe abstraite de base = Article, et News + Faq étend l'article).

Ensuite, j'ai créé des classes de formulaires pour pouvoir créer des News et des Faq. Mais tous les formulaires utilisent le même modèle de brindille. Ensuite, j'ai eu besoin de personnaliser un modèle de champ (disons article.product) comme décrit ici .

Le problème est que le nom du champ change en fonction du formulaire utilisé. Le nom sera soit news_product soit faq_product, il serait donc pratique de pouvoir personnaliser mes champs de formulaire comme ceci pour éviter les répétitions :

{%- block '_'~type~'_product_widget' -%} ... {% endblock %}

Après quelques recherches, j'ai résolu ce problème en forçant le préfixe du formulaire dans les différentes classes de type de formulaire à l'aide de getBlockPrefix, afin que tous les formulaires aient les mêmes noms de champ, et je puisse simplement personnaliser article_product :

public function getBlockPrefix(){ return 'article'; }

Je voulais donc juste documenter ce cas d'utilisation qui peut aider quelqu'un...

Les noms de blocs font partie de la structure du modèle et doivent donc être connus au moment de la compilation.
Les variables ne sont connues qu'à l'exécution.

Cette page vous a été utile?
0 / 5 - 0 notes