Le titre dit tout, je veux désactiver une seule case à cocher d'un élément FAPI de type cases à cocher .
Je ne veux pas faire si avec JavaScript, ni le changer de cases à plusieurs cases à cocher des éléments comme une option l'élément est fourni par un autre module.
Pensées?
Réponses:
Une façon propre existe dans Drupal 7! Apparemment, d' après cet article , ce n'est pas encore documenté.
Un autre exemple .
Vous pouvez également définir la fonction #access sur FALSE, pour masquer complètement la case à cocher.
la source
Malheureusement, il n'y a pas de moyen vraiment propre de le faire dans FAPI. Votre meilleur pari - si vous êtes déterminé - est de modifier une fonction #process supplémentaire sur l'élément checkboxes.
La fonction par défaut ajoutée aux éléments de type 'cases à cocher' est en fait une fonction ( expand_checkboxes () ) divise l'élément unique en plusieurs éléments de type 'case à cocher' qui sont ensuite fusionnés en un seul. Si vous deviez superposer votre deuxième fonction de processus, elle pourrait atteindre le groupe étendu d'éléments de «case à cocher» et désactiver celui en question.
Le code suivant est totalement non testé, donc mettez en garde emptor:
la source
preg_replace()
sur la sortie.Voici mon code pour Drupal 7, pour changer l'élément Roles dans la page Edit User.
la source
J'utilise des cases à cocher comme "attribuer" et "annuler l'attribution". Le client a demandé que je désactive "annuler l'attribution", mais il est toujours important de représenter "l'affectation". Gardant à l'esprit que les cases à cocher DÉSACTIVÉES sont soumises comme "fausses" et si elles ne sont pas gérées correctement, je ne les attribuerai pas. Voici comment:
Notez que «partner_assignments» est son propre tableau / variable et ne sera pas traité comme «unassign», dans mon cas d'utilisation. Merci d'avoir posté - cela m'a conduit à cette solution.
la source
D7. Ici, nous devions nous assurer que lors de l'ajout d'un nœud, une certaine option de référence de terme de taxonomie est toujours incontrôlable et sera toujours enregistrée dans le nœud. Nous sommes donc allés dans #after_build et avons désactivé cette certaine option, mais nous devions nous assurer qu'à la fin cette certaine option serait transmise. Parce que la désactiver uniquement aurait arrêté le déplacement de cette option vers les futurs crochets.
Voilà à quoi ressemble l'option désactivée:
la source
Je n'ai pas pu faire fonctionner la réponse d'Eaton telle qu'elle est écrite (le rappel #process ne renvoie rien, et il est appelé avant que les cases à cocher ne soient développées) et je voulais également que la valeur soit renvoyée par la case à cocher désactivée (je voulais qu'elle soit vérifiée en permanence ). Cela a fonctionné pour moi (D6).
Si quelqu'un connaît une manière plus nette, j'aimerais l'entendre!
la source
Fatal error: Call to undefined function expand_checkboxes()
Voici mon code pour Drupal 7, pour changer l'élément Roles dans la page Edit User.
la source
Dans Drupal 7, afin de désactiver les options dans une sélection dans une entité champable, j'ai constaté que je devais installer une
#process
fonction. Malheureusement, cela a désactivé la fonction de processus intégrée,form_process_checkboxes
ce qui doit être ajouté (ou appelé à partir de votre fonction de processus). De plus, lors de la désactivation des cases à cocher qui sont déjà cochées, j'ai découvert que la valeur intégrée callback (form_type_checkboxes_value
) ignore les valeurs par défaut lors de la récupération des résultats de l'entrée.Alors quelque chose comme ça:
Et enfin:
Je n'ai trouvé aucune des autres réponses sur cette page qui fonctionnait dans ce cas.
la source
Voici mon exemple (en utilisant
#after_build
):Plus le rappel de fonction suivant:
Testé sur Drupal 6, mais il devrait également fonctionner pour Drupal 7.
Drupal 6
Vous pouvez utiliser la fonction suivante ( source ):
la source
J'utilise ce code suivant sur drupal 6: -
et la fonction de rappel est ici: -
/ ** * Traiter chaque case à cocher en fonction de 'feture' est déjà utilisé par un sous-domaine ou non. * @param Array $ element tableau de cases à cocher de formulaire * /
la source
Une chose importante à prendre en compte est que les cases à cocher désactivées ne sont pas soumises, vous pouvez donc constater que vous devez également forcer
#value
la case à cocher. Par exemple:Dans mon cas, sans cela, le
$form_state['values']
ne contenait pas ma valeur de case à cocher (qui était activée par défaut, mais désactivée).la source
Accrochez le champ de texte et créez une zone de texte dynamique avec les informations de la base de données
1 ° obtenir l'assoc. tableau de la base de données par exemple
2 ° Instruments
hook_form_alter()
/ ** * Implémente hook_form_alter (). * form id = vues-exposés-forme * /
3 ° plusieurs champs seront vérifiables!
la source
Si vous créez votre propre formulaire, au lieu d'exécuter des fonctions form_alter / # process / # pre_render distinctes, vous pouvez simplement passer des `` cases à cocher '' à la génération d'éléments de `` cases à cocher '' individuels.
'#tree' => TRUE
vous donne la même structure arborescente que la version des cases à cocher lorsque le tableau $ form_state ['values'] arrive à la validation / soumettre / reconstruire. Si vous ne pouvez pas ou ne voulez pas utiliser #tree pour une raison quelconque, donnez à chaque case à cocher une'#parents' => array('my_element', $key)
propriété pour définir explicitement sa position dans la structure des valeurs.la source