Nous contacter

7 - Grid Magento, tableau en back-office : tutoriel développement backend

INTRODUCTION

Dans cette première partie nous allons étudier la partie Grid en back office de notre module magento afin d'afficher chaque ligne de notre table créer depuis le début de ce tutoriel.

MISE À JOUR DU MENU ET DES AUTORISATIONS ACL

Tout d'abord nous allons rajouter un élément dans notre menu et lui donner des autorisations afin d'afficher notre tableau. Rajouter le code suivant dans votre adminhtml.xml dans menu/gestion/children

<history translate="title" module="gestion">
<title>historique</title>
<sort_order>20</sort_order>
<action>adminhtml/gestion/produit</action>
</history>

dans acl/resources/admin/children/gestion/children

<history translate="title" module="gestion">
<title>Historique</title>
<sort_order>10</sort_order>
</history>

MISE À JOUR DU LAYOUT

Nous allons implémenter le layout avec le nouveau chemin d'accès correspondant à l'action produit (voir controllers) pour lui attribuer le block correspondant.

<adminhtml_gestion_produit>
<reference name="content">
<block type="gestion/adminhtml_produit" name="produit"/>
</reference>
</adminhtml_gestion_produit>

LE CONTROLERS

Nous allons ici simplement modifier le controller pour lui ajouter la fonction correspondant à notre nouvelle action. il s'agit bien sur du fichier controllers/Adminhtml/GestionController.php

public function produitAction(){
$this->loadLayout();
$this->_setActiveMenu('gestion/produit');
$this->renderLayout();
}

LA PARTIE BLOCK DU GRID

Il ne nour reste plus qu'à créer deux fichiers pour déclarer les blocks correspondants au grid d'introduction. Tout d'abord: Valibus/Gestion/Block/Adminhtml/Produit.php

<?php
class Valibus_Gestion_Block_Adminhtml_Produit extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
parent::__construct();
$this->_blockGroup = 'gestion';
$this->_controller = 'adminhtml_produit';
$this->_headerText = $this->__('tableau produits');
$this->removeButton('add');
}
}

Dans ce dernier block, on enlève le bouton add, car il est ajouté par défaut, et nous n'avons pas encore implémenté les méthodes correspondantes.

Nous allons maintenant créer le tableau en tant que tel avec le fichier : Valibus/Gestion/Block/Adminhtml/Produit/Grid.php C'est lui qui va contenir les déclarations et méthodes propres à l'affichage de notre tableau.

<?php
class Valibus_Gestion_Block_Adminhtml_Produit_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('gestion_histo');
$this->setDefaultSort('created_time');
$this->setDefaultDir('ASC');
}
protected function _prepareCollection()
{
$collection = Mage::getModel('gestion/gestion')->getCollection();
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns()
{
$this->addColumn('title', array(
'header' => $this->__('App Title'),
'align' => 'left',
'index' => 'title',
'type' => 'text',
'escape' => true
));
$this->addColumn('sku', array(
'header' => $this->__('Sku Produit'),
'align' => 'left',
'index' => 'skuproduit',
'escape' => true
));
$this->addColumn('created_at', array(
'header' => $this->__('Date Submitted'),
'align' => 'left',
'index' => 'creation_time',
'type' => 'datetime'
));
$this->addColumn('updated_at', array(
'header' => $this->__('Date Updated'),
'align' => 'left',
'index' => 'update_time',
'type' => 'datetime'
));
return parent::_prepareColumns();
}
public function getRowUrl($row)
{
return '';
}
}

Prochaine étape : gestion du grid en back office magento

Pas trop compliqué ? Si jamais, faites plutôt appel à notre expert développeur magento !

Livre

Découvrez les best practices en SEO

Téléchargez notre livre blanc SEO !