Connexion S'inscrire

Connectez-vous

Login *
Mot de passe *
Se souvenir de moi

Créer un compte

Les champs marqués d'un astérisque (*) sont requis.
Nom *
Login *
Mot de passe *
Vérification mot de passe *
Email *
Vérification email *
Captcha *

Création d'un composant Joomla (partie 12) Champs standards, Alias


Dans cette partie,  nous allons ajouter la prise en charge du champ Alias qui fait partie des champs standards de Joomla. Tout se passera au côté administrateur donc dans le dossier administrator. Si vous êtes arrivés directement sur cette page, peut-être que vous aimeriez commencer par le début: Partie 1 | Partie 2 | Partie 3 | Partie 4 | Partie 5 | Partie 6 | Partie 7 | Partie 8 | Partie 9 | Partie 10 | Partie 11

1 - Alias

Le champ alias est utilisé souvent pour créer un url convivial et permettre un bon référencement. Au lieu d'avoir id=12, on utilisera le text écrit dans le champ alias.

Nous allons rajouter le champs alias dans l'administration de notre composant. Plus tard, nous verrons comment utiliser ce champ sur le site (côté client). Nous allons utiliser le champs alias que nous avons ajouté à notre table dans la base de données à la partie 9.

2 Le formulaire xml

Nous commencerons par ajouter le champ alias dans le formulaire xml. Le fichier de formulaire nommé guitariste.xml se trouve dans models/forms. Nous ajouterons l'alias juste en dessous du nom de guitariste. Voici le code à rajouter dans le fichier guitariste.xml juste en dessous de la balise field du nom (name="name"): 


<field name="alias" type="text"
        label="JFIELD_ALIAS_LABEL"
        description="JFIELD_ALIAS_DESC"
        class="inputbox" />

3 Le calque de vue "edit.php"

 Nous allons maintenant modifier le fichier edit.php pour afficher le champ alias que nous venons d'ajouter dans le formulaire. Ce fichier se trouve dans le dossier views/guitariste/tmpl. Nous allons rajouter juste après la fermeture du div de classe control-group qui contient l'affichage du nom ("name") le bout de code suivant:


<div class="control-group">
  <div class="control-label">
	<?php echo $this->form->getLabel('alias'); ?>
  </div>
  <div class="controls">
	<?php echo $this->form->getInput('alias'); ?>
  </div>
</div>

4 Le fichier de table "guitariste.php"

Nous allons modifier la méthode check du fichier de table pour créer l'alias à partir du nom si le champ est vide et aussi vérifier qu'il n'y ait pas de doublon d'alias de la même catégorie dans la base de données. Nous allons aussi valider la catégorie. Le fichier de table guitariste.php se trouve dans le dossier tables. Nous allons ouvrir ce fichier et apporter les modifications suivante à la méthode check:


public function check(){
    
    //Nous vérifions que le nom n'est pas vide
    if(trim($this->name) == ''){
       $this->setError(JText::_('COM_DJGUITARISTE_ERROR_TABLE_NAME'));
       return false;
    }
    
    
    $this->alias = JApplication::stringURLSafe($this->alias);
    //Si le champs alias est vide, nous le créons à partir du nom
    if(empty($this->alias)){
      $this->alias = JApplication::stringURLSafe($this->name);
    }
    
    //Nous vérifions s'il n'y a pas de doublons dans la base de données
    $table = JTable::getInstance('Guitariste', 'DJGuitaristeTable');
    if($table->load(array('alias'=>$this->alias, 'catid'=>$this->catid)) && ($table->id != $this->id || $this->id == 0))
    {
      $this->setError(JText::_('COM_DJGUITARISTE_ERROR_ALIAS_DUPPLICATED'));
      return false;
    }
    
    //Nous allons valider la catégorie
    if(trim($this->catid) == ''){
      $this->setError(JText::_('COM_DJGUITARISTE_CATEGORY_MISSING'));
      return false;
    }
    
    return true;
  }

5 Le fichier de langue

 Vous l'avez sûrement deviné la dernière modification restante est celle du fichier de langue. nous devons y ajouter les nouveaux clés que nous avons utilisés dans la méthode check. Voici le chemin du fichier à ouvrir language/fr-FR/fr-FR.com_djguitariste.ini. Les lignes à rajouter sont les suivantes:


COM_DJGUITARISTE_ERROR_ALIAS_DUPPLICATED="Cet Alias existe déjà dans la base de données"
COM_DJGUITARISTE_CATEGORY_MISSING="La catégorie ne peut être vide, veuillez sélectionner une catégorie"

Lire la suite


  • Dernière modification le jeudi, 28 septembre 2017 15:17
  • 438
Docteur Joomla

Après plus de 10 ans d'expérience en Joomla, je lance ce Blog pour partager mes connaissances avec les autres développeurs Joomla.