Tout d'abord, je suis conscient de cette question:
/programming/14799733/remove-name-field-from-joomla-registration-form
Mais le lien dans sa réponse est mort, et le chemin de fichier mentionné n'existe pas dans la dernière version de Joomla (version 3.3), donc la réponse est d'aucune utilité.
Ce que je veux, c'est simple: le formulaire d'inscription pour Joomla ressemble à ceci:
Je veux m'assurer que le processus d'inscription est aussi simple que possible pour mes utilisateurs afin qu'ils le terminent réellement, et il y a quelques problèmes:
- Je n'ai pas besoin de connaître le vrai nom de l'utilisateur.
- Je préfère ne pas avoir de cases "confirmer". Le consensus général est qu'ils ne sont pas nécessaires. /ux/484/is-a-repeat-password-field-necessary-in-a-signup-page
- Tout est requis, pourquoi s'embêter à marquer les champs obligatoires?
C'est sûrement une page d'inscription bien meilleure:
J'ai modifié le fichier \ components \ com_users \ models \ forms \ registration.xml pour que le formulaire ressemble à ce que je veux, et cela a fonctionné! Mais chaque fois que je soumets le formulaire, la validation recherche toujours les champs manquants, donc cela m'informe que je dois fournir un nom:
"L'inscription a échoué: veuillez entrer votre nom."
Comment puis-je désactiver les vérifications pour le champ de nom, ainsi que les deux champs de confirmation?
Puisqu'un nom est requis, je voudrais définir le nom sur le nom d'utilisateur fourni (donc le nom d'utilisateur et le nom sont les mêmes par défaut). Si l'utilisateur souhaite réellement définir un vrai nom dans sa page de profil après l' enregistrement, il devrait pouvoir le faire, mais cela ne devrait pas être obligatoire.
Suis-je en train de mal faire ça? J'ai lu à certains endroits que la modification des fichiers Joomla de base n'est pas bonne, car cela pourrait interrompre une mise à jour, et que des "remplacements" devraient être utilisés à la place. Habituellement, ces réponses renvoient simplement à la page de Joomla sur les remplacements et ne fournissent aucune explication plus détaillée sur la façon de les utiliser pour faire ce que le demandeur veut. J'ai essayé de les comprendre, mais je ne peux pas, donc si les remplacements sont le chemin à parcourir, veuillez expliquer comment je procéderais avec eux, plutôt que de simplement me lier au didacticiel de remplacement.
J'apprécierais grandement toute aide que vous pourriez fournir, j'essaie de comprendre cela depuis quelques heures maintenant!
la source
Réponses:
Idéalement, tout cela se fera dans un plugin utilisateur. Je ne suis pas sûr que beaucoup de gens le réalisent, mais vous pouvez modifier le formulaire à partir d'un plugin (aucun hack de base requis).
De même, le plugin verra l'entrée avant que le modèle ne tente d'enregistrer l'entrée, vous pouvez donc vous moquer de certains champs de duplication de champ pour le forcer à passer la validation.
Cette fonction dans un plugin "utilisateurs" vous permet de modifier la forme:
Ensuite, vous pouvez utiliser une fonction onUserBeforeSave pour réinitialiser l'un des champs que vous devez réinitialiser pour réussir la validation. (Cela peut ne pas être totalement nécessaire, alors essayez sans et voyez quelles erreurs vous obtenez.)
la source
D'accord, je pensais à une approche sans devoir pirater quoi que ce soit ni installer d'extensions tierces. Ma méthode impliquera une substitution de modèle que vous devrez effectuer pour le composant com_users , en particulier la vue Registration .
Maintenant, pour les champs (en supposant que votre remplacement de modèle est entièrement configuré), nous ne les supprimerons pas, mais les cacherons car le contrôleur et le modal nécessitent des données d'eux. Ouvrez donc le fichier suivant qui est maintenant le remplacement de votre modèle:
et ajoutez le code suivant en haut du fichier juste après
JHtml::_('behavior.formvalidation');
:J'ai ajouté quelques commentaires afin que vous sachiez ce que fait chaque extrait de code.
J'espère que cela t'aides :)
la source
@ La réponse de DavidFritsch a été très utile. Cependant, j'ai trouvé quelques problèmes:
A) Vous ne pouvez pas supprimer complètement certains champs obligatoires car cela pose des problèmes avec le filtrage des données lors de la soumission du formulaire (voir les commentaires dans le code ci-dessous). Pour lutter contre cela, cachez plutôt que supprimez les champs de l'objet formulaire. B) L'événement onUserBeforeSave n'est déclenché que trop tard pour empêcher la logique de validation d'inscription de rejeter la soumission du formulaire. Utilisez plutôt l'événement onUserBeforeDataValidation.
Dans mon cas particulier, tout ce que je voulais, c'était une adresse e-mail et un mot de passe. Joomla a cependant ajouté une complication ici, car l'adresse e-mail apparaissait après le mot de passe (dictée par l'ordre des champs déclarés dans le fichier registration.xml), ce qui serait stupide du point de vue de l'expérience utilisateur. Pour contourner ce problème, j'ai renommé le champ du nom d'utilisateur en «Adresse e-mail» et j'ai masqué le champ de l'adresse e-mail. L'e-mail est ensuite transféré par défaut à partir du nom d'utilisateur lors de la soumission du formulaire.
(Remarque mineure: j'ai restreint le plugin pour qu'il fonctionne uniquement sur le formulaire 'com_users.registration' à mes fins, par rapport à la réponse de David qui considère également d'autres formes.)
la source