Créer un type champ personnalisé dans un module - Joomla 4

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Créer un type champ personnalisé dans un module - Joomla 4

    Bonjour à tous,

    Je viens vers vous, car j'aimerai créer un type de champs "fblogin" pour créer un bouton personnalisé pour se connecter avec Facebook dans un module Joomla 4. Le but étant d'avoir un bouton personnalisé de connexion à facebook intégré au module.

    J'ai créé un fichier fblogin.php dans models/fields/ de mon module.

    J'y ai mis ce code :
    Code PHP:
    <?php
        
    use Joomla\CMS\Form\FormField;
        
    defined('_JEXEC') or die;
        class 
    FormFieldfblogin extends FormField
        
    {
            protected 
    $type 'fblogin';
            public function 
    getInput()
            {
                   return 
    '<button class="btn btn-login" id="loginBtnFb">Connexion à Facebook</button>';
            }
         }

    Dans mon fichier XML, j'ai ajouté au fieldset addfieldpath="/modules/mod_systrio_fb/models/fields"
    Et j'ai créé mon champ comme ceci :
    Code HTML:
    <field name="fblogin" showon="type_content:1" type="fblogin" label="Connectez-vous à facebook" description=""></field>
    Hors, cela ne fonctionne pas. Est-ce qu'une personne peut m'aider sur ce sujet ?

    Je vous remercie par avance,
    Bonne journée à vous.

    Steven

  • #2
    Bonjour Steven

    Il y a plusieurs choses à faire pour que cela soit compatible J4 à partir d'une base J3.

    Dans ton fichier modules/mod_systrio_fb/mod_systrio_fb.xml :
    • Dans un premier temps, il faut ajouter cette ligne (en dessous de la balise "description" par exemple) :
    Code:
    <namespace path="src">Joomla\Module\Fb</namespace>
    Cela permet d'indiquer à Joomla 4 comment sera structurée ton extension.
    Une fois cela fait, il faut aller dans la table #__extensions et supprimer la ligne correspondant à ton module, pour la trouver filtre sur type="module" et element="mod_systrio_fb".
    Ensuite, tu peux te rendre dans ton back-office dans Système > Installation > Découvrir, et installer à nouveau ton application.
    Cela mettra à jour le fichier administrator/cache/autoload_psr4.php et ta base de travail sera correcte.
    • Ensuite, toujours dans ce fichier tu peux ajouter au fieldset qui contient l'attribut "addfieldpath" ceci :
    Code:
    addfieldprefix="Joomla\Module\Fb\Site\Field"
    C'est en quelque sorte « l'équivalent » sur Joomla 4.
    En tout cas, ça lui indique où trouver la définition de ton custom field.
    • En dernier lieu, tu vas devoir créer un nouveau fichier : modules/mod_systrio_fb/src/Field/FbloginField.php
    Voici son contenu :

    Code PHP:
    <?php
    namespace Joomla\Module\Fb\Site\Field;
    defined('_JEXEC') or die;
    class 
    FbloginField extends \Joomla\CMS\Form\FormField
    {
        protected 
    $type 'Fblogin';
        protected function 
    getInput()
        {
            require_once 
    dirname(dirname(__DIR__)) . '/models/fields/fblogin.php';
            
    $field = new \FormFieldfblogin();
            return 
    $field->getInput();
        }
    }
    Cela te permettra de maintenir uniquement le code qui se trouve dans ton fichier models/fields/fblogin.php.

    Normalement ton bouton apparait maintenant sur J4 (sans poser de problème sur J3).
    N'hésite pas à me dire si quelque chose n'est pas clair.
    stevenoyer aime ceci.

    Commentaire


    • #3
      Bonjour Tristan,

      Merci beaucoup pour ton aide, cela fonctionne parfaitement !

      Bonne journée,
      Steven

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X