10
votes

Groupes de terrain conditionnels / Tableaux dans Drupal 7

arrière-plan: à Drupal 7, j'ai créé un formulaire avec CCK (alias l'interface utilisateur du champ). J'ai utilisé le groupe de champs pour créer un groupe de terrain, mais j'en ai besoin pour être conditionnel, ce qui signifie qu'il ne s'affiche que en fonction d'un précédent Réponse.

Recherche précédente : Pour créer un champ conditionnel, vous pouvez utiliser harok_form_alter () pour éditer le #states attribut comme: xxx

Cependant, il semble y avoir aucun moyen d'utiliser les API des États pour les groupes de terrain. Une chose à noter est que, alors que les champs sont stockés dans $ formulaire , les groupes de champs sont stockés dans $ formulaire ['# groups'] ainsi que dans $ formulaire ['#feldGroups'] . Je ne sais pas comment distinguer entre eux, et dans cet esprit, j'ai essayé d'appliquer un # stipule attribut à un groupe de terrain de la même manière que ci-dessus. Cependant, il ne produit que des erreurs de serveur.

question : Existe-t-il un moyen de faire une affichage de groupe de terrain conditionnellement à l'aide de l'API des États ou une approche alternative? >


0 commentaires

3 Réponses :


0
votes

Peut-être que vous pouvez essayer de regarder le code de Ce module pour vous aider à trouver une idée. < / p>


1 commentaires

Merci pour le conseil. Je n'ai réellement fini par regarder parce que j'ai eu quelque chose à travailler enfin. Découvrez la solution postée si vous êtes intéressé.



2
votes

Voici la solution la plus simple que j'ai proposée. Il y a essentiellement 2 parties à ceci: (1.) altérer par programme l'affichage du formulaire et (2.) Utilisez l'interface graphique pour modifier l'affichage du contenu.

(1.) Tout d'abord, j'ai utilisé Hook_Form_alter () Pour créer de manière programmable dans les champs conditionnels et ajouter des champs existants à celui-ci. Le code est indiqué ci-dessous. xxx

(2.) Puis j'ai utilisé le groupe de champs Module pour modifier l'affichage du contenu. Je l'ai fait en allant à mon type de contenu et en utilisant l'onglet «Gérer l'affichage» pour créer un groupe de champs et y ajouter mes champs. De cette façon, les champs sembleront être distincts du même groupe sur la forme et le contenu sauvegardé.


0 commentaires

7
votes

3 commentaires

Wow, c'est beaucoup plus élégant que ma solution! Merci!


Ce genre de travail pour moi mais j'ai rencontré un problème majeur. Lors de la création d'un nœud d'un type de contenu différent, ce code serait toujours exécuté. Et lorsque j'ai essayé de mettre une condition dans le code pour vérifier le type de nœud spécifique, il est apparu que l'élément $ a été porté sur des valeurs de l'autre formulaire à celui-ci. Problème principal: le type de nœud était incorrect. Quelqu'un d'autre l'expérite-t-elle? Je suis sur d7.


@Mtsrb Essayez une condition sur l'élément $ ['# form_id']