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 8) La barre d'outils


Dans cette partie,  nous allons ajouter la barre d'outils sur la vue liste et avoir les boutons Nouveau, Modifier, Supprimer. 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.

1 Ajout de la barre d'outils

Nous sommes toujours dans l'administration (dans le dossier administrator). Nous allons maintenant ajouter la barre d'outils à la vue liste. La façon de réaliser cela est exactement comme pour la vue du formulaire que nous avons réaliser précédemment dans la partie 7. Nous allons ouvrir le fichier view.html.php qui se trouve dans view/guitaristes (avec s à la fin) et rajouter une fonction addToolbar et appeler cette fonction dans la méthode display. Voici le contenu du fichier view.html.php avec les deux méthodes:


<?php
defined('_JEXEC') or die;

class DJGuitaristeViewGuitaristes extends JViewLegacy
{
  public function display($tpl = null)
  {
    $items = $this->get('Items');
    $this->items = &$items;
    
    //Appel de la fonction pour créer la barre d'outil
    $this->addToolbar();
    
    parent::display($tpl);
    
  }
  
  protected function addToolbar(){
    JToolbarHelper::title(JText::_('COM_DJGUITARISTE_MANAGE_GUITARISTES'));
    JToolbarHelper::addNew('guitariste.add');
    JToolbarHelper::editList('guitariste.edit');
    JToolbarHelper::deleteList('', 'guitaristes.delete');

JToolbarHelper::divider();

JToolbarHelper::help('JHELP_COMPONENTS_DJGUITARISTE_GUITARISTES_EDIT'); } }

Nous verrons dans un tutoriel à venir comment créer son propre bouton (custom) dans la barre d'outils.

2 Modification du modèle DJGuitaristeModelGuitariste (guitariste.php)

Jusqu'à présent le fonctionnement de la méthode getItem du modèle DJGuitaristeModelGuitariste (guitariste.php) requiert un id, c'est-à-dire qu'elle utilise uniquement des données déjà existants dans la base de données. Vue que nous venons d'ajouter le bouton Nouveau pour ajouter de nouveaux guitaristes, nous allons accéder au formulaire sans valeurs venant de la base de données. Y a certainement plusieurs façons de gérer ce problème mais j'ai choisi de retourner un objet avec toutes les propriétés à null. Donc pour réaliser cela, nous allons créer une méthode qui va retourner un objet avec les propriétés null. Nous allons la nommer getNullItem. Rajoutons cette fonction dans le modèle guitariste.php (sans s):


private function getNullItem(){
    
    //Nous créons un objet vide
    $item = new stdClass();
    $item->id = NULL;
    $item->name = NULL;
    $item->picture = NULL;
    $item->intro = NULL;
    $item->biography = NULL;
    $item->youtube_video = NULL;
    $item->website = NULL;
    $item->facebook = NULL;
    
    return $item;
  }

 Et donc dans la méthode getItem, nous allons vérifier si l'id existe et dans le cas contraire, nous faisons appel à la méthode getNullItem si-dessus.  La méthode GetItem devrait maintenant ressembler à ceci:


public function getItem($pk = null)
  {
    $app = JFactory::getApplication();
    $id = $app->input->getInt('id');
    
    if(empty($id)){
       return $this->getNullItem(); 
    }
    
    $db = $this->getDbo();
    $query = $db->getQuery(true);
    $query->select('*');
    $query->from('#__djguitariste_items');
    $query->where('id = '.$id);
      
    $db->setQuery($query);
    $result = $db->loadObject();
      
    return $result;   
  }

 Donc au final, le contenu de notre fichier de modèle (guitariste.php) devrait ressembler à ceci:


<?php
defined('_JEXEC') or die;

class DJGuitaristeModelGuitariste extends JModelAdmin
{
  
  public function getItem($pk = null)
  {
    $app = JFactory::getApplication();
    $id = $app->input->getInt('id');
    
    if(empty($id)){
       return $this->getNullItem(); 
    }
    
    $db = $this->getDbo();
    $query = $db->getQuery(true);
    $query->select('*');
    $query->from('#__djguitariste_items');
    $query->where('id = '.$id);
      
    $db->setQuery($query);
      $result = $db->loadObject();
      
      return $result;   
  }
  
  public function getForm($data = array(), $loadData = true)
  {
    $app = JFactory::getApplication();
    
    //Nous chargeons le formulaire ici
    $form = $this->loadForm('com_djguitariste.guitariste', 'guitariste', array('control'=>'jform', 'load_data'=>$loadData));
    if(empty($form)){
      return false;
    }  
    
    return $form;
  }
  
  protected function loadFormData()
  {
    $data = JFactory::getApplication()->getUserState('com_djguitariste.edit.guitariste.data', array());
    if(empty($data)){
      $data = $this->getItem();
    }  
    
    return $data;
  }
  
  public function getTable($type = 'Guitariste', $prefix = 'DJGuitaristeTable', $config = array()){
    return JTable::getInstance($type, $prefix, $config);    
  }
  
  private function getNullItem(){
    
    //We create empty object
    $item = new stdClass();
    $item->id = NULL;
    $item->name = NULL;
    $item->picture = NULL;
    $item->intro = NULL;
    $item->biography = NULL;
    $item->youtube_video = NULL;
    $item->website = NULL;
    $item->facebook = NULL;
    
    return $item;
  }
  
}

3 Création du contrôleur guitaristes.php

Nous allons mettre en place le contrôleur pour la vue liste. Vue que ce contrôleur va faire appel au modèle DJGuitaristeModelGuitariste (guitariste.php) pour supprimer un élément par exemple, nous allons avoir besoin d'une méthode getModel qui retournera une instance de ce modèle. Donc dans le dossier controllers, nous allons créer un fichier nommé guitaristes.php (avec s). Voici le contenu du fichier:


<?php
defined('_JEXEC') or die;

class DJGuitaristeControllerGuitaristes extends JControllerAdmin
{
  public function __construct( $config = array()){
    parent::__construct($config);    
  }
  
  //Nous reviendrons ici plus tard
  public function allowEdit($data = array(), $key = 'id'){
     return true;
  }
  
  //Nous reviendrons ici plus tard
  public function allowAdd($data = array(), $key =  'id'){
    return true;
  }
  
  public function getModel($name = 'Guitariste', $prefix = 'DJGuitaristeModel', $config = array('ignore_request' => true)){
    return parent::getModel($name, $prefix, $config);    
  }
  
}

 Maintenant sur la vue, liste nous pouvons cliquer sur le bouton Nouveau pour ajouter un nouveau guitariste et nous pouvons cocher un élément dans la liste et le modifier. Nous pouvons aussi cocher un ou plusieurs éléments et ensuite cliquer sur le bouton Supprimer pour les supprimer de la base de données.

Dans les prochains tutoriels, nous allons rendre notre composant plus conforme au fonctionnement d'un CMS. Nous allons donc ajouter la possibilité de publier ou dé-publier un  élément, sauvegarder la date de création, et le id de la personne qui a créer... Cliquez ici pour lire la partie 9


  • Dernière modification le jeudi, 28 septembre 2017 15:13
  • 550
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.