L'affichage de la table dans twig dynamiquement
J'essaie d'afficher tous les utilisateurs de mon objet Utilisateur sans connaître la structure de l'objet (si je peux utiliser la même table pour afficher d'autres collections d'objets).
C'est ce à quoi il devrait ressembler 'statique':
<table>
<tr>
<td>id</td>
<td>username</td>
</tr>
{% for item in entities %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.username }}</td>
</tr>
{% endfor %}
</table>
Ce que je veux faire, c'est quelque chose comme suit (c'est juste pour afficher ce que je suis en train de faire, mais ce n'est pas encore proche de travail):
<table>
<tr>
{% for property_title in entities.item[0] %}
<td>{{ property_title }}</td>
{% endfor %}
</tr>
{% for item in entities %}
<tr>
{% for property in item %}
<td>{{ property.value }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
Résultat devrait être quelque chose comme suit:
<table>
<tr>
<td>id</td>
<td>username</td>
</tr>
<tr>
<td>1</td>
<td>Mike123</td>
</tr>
<tr>
<td>2</td>
<td>jesica2</td>
</tr>
</table>
PD: c'est mon premier post, donc toutes mes excuses si j'ai oublié quelque chose.
Et ce qui ne fonctionne pas?
Il est évident qu'il veut faire une boucle sur tous (?) propriétés et/ou de lecture-méthodes d'un objet à l'intérieur d'une collection générique contenant uniquement des objets de même type ... mais il ne sait pas comment obtenir leurs noms (et de comptage) afin de créer de la boucle. Il n'y a pas de filtre twig/fonction disponibles pour obtenir ces directement, mais il existe des solutions de contournement ...
vous l'avez. Merci pour l'explication. Je viens de faire le code sur la base de la façon dont j'ai pensé qu'il pourrait travailler pour but d'explication.
Notez que twig permet de faire des point.nom d'utilisateur, même si le nom d'utilisateur est privé/protégé. Vous ne savez pas si cela fait une différence, cependant.
oui il y a une différence , twig jusqu'à essayer d'accéder à la propriété (c'est à dire
Il est évident qu'il veut faire une boucle sur tous (?) propriétés et/ou de lecture-méthodes d'un objet à l'intérieur d'une collection générique contenant uniquement des objets de même type ... mais il ne sait pas comment obtenir leurs noms (et de comptage) afin de créer de la boucle. Il n'y a pas de filtre twig/fonction disponibles pour obtenir ces directement, mais il existe des solutions de contournement ...
vous l'avez. Merci pour l'explication. Je viens de faire le code sur la base de la façon dont j'ai pensé qu'il pourrait travailler pour but d'explication.
Notez que twig permet de faire des point.nom d'utilisateur, même si le nom d'utilisateur est privé/protégé. Vous ne savez pas si cela fait une différence, cependant.
oui il y a une différence , twig jusqu'à essayer d'accéder à la propriété (c'est à dire
$property
) tout d'abord ... et si cela ne fonctionne pas (c'est à dire en raison de la propriété d'être privé/protégé ) ... essayez d'appeler le correspondant de la méthode de lecture getProperty()
lors de l'utilisation de la .
notation. Donc user.name
ne parviennent pas $name
est privé/protégé et il n'y a pas de getName()
fonction.OriginalL'auteur gonza182 | 2014-02-04
Vous devez vous connecter pour publier un commentaire.
Faire une extension twig qui retourne la liste des champs que vous voulez, de cette façon, vous pouvez utiliser php pour obtenir les champs. Après cela, utiliser twig l'un des attributs de la fonction
{{ attribut(objet, champs) }} pour appeler des méthodes sur l'objet
docs:
http://symfony.com/doc/current/cookbook/templating/twig_extension.html
http://twig.sensiolabs.org/doc/functions/attribute.html
exemple:
Ok. Donc je l'ai testé et sa sorte de là. Je vais poster la solution complète une fois que je l'ai. La question que je vais avoir, c'est que {{ attribut de l'élément, la propriété) }} ne fonctionne qu'avec string et int. Quand il y a une date ou une référence à un autre objet, il explose. Toute suggestion?
ERREUR de DATE (ContextErrorException: Erreur Fatale: un Objet de la classe DateTime n'a pas pu être converti en chaîne ) ERREUR de RÉFÉRENCE(ContextErrorException: Erreur Fatale: un Objet de la classe Procurations ABC n'a pas pu être converti en chaîne)
créer une autre extension twig ou un filtre appelé de désinfection et de vérifier si la valeur est de la date, si elle est de type datetime retourner une chaîne au format date, sinon renvoyer la valeur donnée
Yup. Je l'ai fait. J'ai été capable de faire ce travail maintenant dans l'attente de certains mineurs de nettoyage. Bon de voir comment twig extensions de travail. Finalement j'ai réalisé cette solution n'est pas réaliste pour mon utilisation et je vais créer une table par entité selon comment j'ai d'abord fait. Je n'ai pas assez de points de rep, mais C'EST LA bonne RÉPONSE. Je reviendrai une fois que je gagne assez de points à marquer.
OriginalL'auteur Derick F
La modification de Derick F de réponse, pour plus de simplicité, vous pouvez utiliser les touches pour obtenir le nom du champ au lieu d'utiliser une extension twig. La réponse ci-dessous ne requiert pas les "domaines" de la variable définie dans une classe d'extension.
Cela nécessite de les en-têtes pour être stockée dans la clé de l'entité. Pour plus d'un ensemble complexe de structures et plus de flexibilité, une extension twig peut être nécessaire.
Pour vérifier les objets datetime et le convertir en une chaîne de caractères, par conséquent, vous pouvez regarder le thread ci-dessous qui ne nécessite pas une extension aussi:
Vérifier si une variable est une date avec Twig
OriginalL'auteur Richard H