9 – COMMENT METTRE EN PLACE DES ACTIONS DE MASSE (GROUPE) DANS MAGENTO ?

Nous allons mettre en place les options de type massAction, jusqu’ici nous avons créer un module avec des action individuelles, ici cas simple la fonction delete, pour supprimer plusieurs éléments en une seule fois.

!!! Attention ce tutoriel n’est pas réalisé avec les informations des leçons 1 à 8, ici le namespace est toujours « Valibus » et le nom du module est en revanche « Compar » et non pas Gestion. Je vous laisse donc l’adapter à votre guise.

EDITION DU CONTROLERS DE L’ADMINHTML

Dans le fichier du controllers ici ‘/app/code/local/Valibus/Compar/controllers/Adminhtml/ComparController.php’ nous allons ajouter la fonction correspondant à l’action dite de masse.

public function massdeleteAction()
{

if(count($this->getRequest()->getParam('idmass')) > 0 ) {
$gestionModel = Mage::getModel('compar/compar');
$idmass=$this->getRequest()->getParam('idmass');
try {
$i=0;
foreach($idmass as $id){
$gestionModel->setId($id)->delete();
$i ;
}

Mage::getSingleton('adminhtml/session')->addSuccess($this->__('%s Compar attributes successfully deleted',$i));
$this->_redirect('*/*/compar');
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
$this->_redirect('*/*/');
}
}
else
{
Mage::getSingleton('adminhtml/session')->addError($this->__('No attributes selected'));
}
$this->_redirect('*/*/');
}

Comme vous pouvez le constatez on utilise la function getRequest afin de récupérer le contenu du formulaire ensuite l’action est très proche d’un simple delete éxécuté en boucle. On utilise un try catch, couplé aux singleton de session addSuccess et addError pour afficher un retour aux utilisateurs.

EDITION DU GRID EN BACK OFFICE

 Ici, c’est le fichier /app/code/local/Valibus/Compar/Block/Adminhtml/Compar/Grid.php que nous modifions, nous ajouter simplement la fonction _prepareMassaction qui spécifie le champ id correspondant au controller précédemment implémenté. Nous ajoutons également l’item delete dans le block massAction.

protected function _prepareMassaction() {
$this->setMassactionIdField('idmass');
$this->getMassactionBlock()->setFormFieldName('idmass');

$this->getMassactionBlock()->addItem('delete', array(
'label' => $this->__('Delete'),
'url' => $this->getUrl('*/*/massdelete'),
));
return $this;
}

CONCLUSION

Vous n’avez plus qu’à faire un petit refresh de votre navigateur et éventuellement un vidage des caches et le tour sera joué !

Etape suivante :  10 – Administrer la configuration d’un module

Vous avez plus d’un module à réaliser et besoin de développement stable ? Faites appel à notre  développeur magento !