J'essaie d'écrire un plugin Joomla pour ajouter des champs au formulaire d'administration du groupe d'utilisateurs.
J'ai déjà écrit des plugins qui ont ajouté un nouvel onglet au formulaire utilisateur. Cela est possible en ayant un plugin avec la méthode onContentPrepareForm
et en appelant $form->load()
ou $form->loadFile()
pour injecter le code XML du nouvel onglet de champs dans le formulaire existant.
Comme je le disais, cela fonctionne bien pour le formulaire utilisateur, mais ne fait absolument rien du tout dans le formulaire de groupe.
J'ai écrit un plugin, référencé le nom du formulaire sous la forme com_users.group
Et appelé $form->load()
pour injecter mon formulaire XML. Le XML est valide et aucune erreur n'est signalée, mais les nouveaux champs de formulaire ne s'affichent pas.
J'imagine que c'est parce que le formulaire utilisateur est déjà défini avec plusieurs onglets, alors que le formulaire de groupe est beaucoup plus simple et ne l'est pas.
J'ai également essayé d'ajouter les champs individuels au formulaire existant (sans créer de nouvel onglet) en utilisant $form->setField()
, mais cela n'a également aucun effet.
Dans les deux cas, lorsque je fais une var_dump($form)
après avoir injecté mes champs, je peux voir les nouveaux champs dans la structure d'objet XML du formulaire, mais ils ne sont pas au bon endroit dans la structure, ce qui explique pourquoi. ils ne se présentent pas.
Quelqu'un peut-il m'aider à me diriger dans la bonne direction ici? Cela devient assez frustrant.
Merci.
Le groupe edit.php
le fichier de modèle ne rendra aucun champ supplémentaire susceptible d’exister dans le formulaire, car il semble être assez simple et quelque peu statique.
Il est probable que vous aurez besoin d'un remplacement de modèle, dans lequel vous pourrez parcourir les champs personnalisés de votre groupe de champs et les restituer.
Sous les domaines de base, quelque chose comme ci-dessous pourrait fonctionner:
<?php foreach ($this->form->getFieldset('YOUR_CUSTOM_FIELDSET') as $field) : ?>
<div class="control-group">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
<?php endforeach; ?>