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 !