web-dev-qa-db-fra.com

renderField avec les champs du plugin personnalisé

Je dois développer les fonctionnalités du formulaire d'inscription. Après quelques tutoriels et l'exemple de plugin de profil, j'ai pu utiliser le onContentPrepareForm pour ajouter les nouveaux champs.

La deuxième partie est qu’ils doivent être triés dans un ordre spécifique en utilisant certains des champs par défaut. J'ai créé un remplacement de modèle et je l'ai fait exactement comme je le voulais. Cependant, 2 des nouveaux champs ont la fonctionnalité showon. Cela signifie qu’à deux endroits différents un champ ne sera affiché que si la valeur du champ précédent correspond à une valeur spécifique. J'ai remarqué que même si cela fonctionnait sur le backend, sur le frontend, cela ne fonctionnait pas; les champs conditionnels seront toujours affichés. Après avoir fait quelques recherches et examiné le code de base (où il fonctionnait), j'ai remarqué que la fonctionnalité showon ne fonctionne que lorsque les champs sont rendus à l'aide de la méthode renderField. Assez simple, je pensais pouvoir exécuter la méthode sur chacun de mes champs dans le bon ordre. Voici où mon problème est à. Je ne peux afficher que les champs par défaut (nom, nom d'utilisateur, mot de passe). Aucun de mes champs personnalisés n'est rendu à l'aide de cette méthode. Lorsque je passe en revue chaque champ et exécute la méthode renderField (), ils fonctionnent tous.

        foreach ($fields as $field) {
                echo $field->renderField();             
        }

Cependant, lorsque j'essaie de rendre chacun individuellement par son nom en utilisant $form->renderField('field'), les champs personnalisés ne sont pas rendus. J'ai essayé d'utiliser le nom que je leur ai donné dans le form.xml fichier, j’ai essayé d’utiliser jform [field], jform_field mais rien ne fonctionne. Même lorsque j'essaie d'utiliser $ this-> form-> getField ('nom du champ'), je ne récupère le champ sur aucun de mes champs personnalisés, mais uniquement sur les champs d'origine.

Je pense que cela pourrait avoir à faire avec le plugin et les noms de champ n'étant pas disponibles, mais je ne suis pas sûr. Joomla étant assez nouveau pour moi, j'essaie toujours de comprendre.

Toute aide serait appréciée, merci!

1
chavab_1

OK, j'ai enfin réussi à regarder à travers cette page encore.

Pour afficher l'un des champs par défaut, je devais simplement entrer renderField('name_of_field'), mais pour afficher l'un des champs personnalisés, je devais ajouter un deuxième paramètre, qui correspond au nom du groupe des champs. Dans mon cas, j'ai gardé le même nom de groupe que l'exemple de plugin - profile. J'ai donc dû entrer renderField('name_of_field', 'profile')

1
chavab_1