410 GONE

Besoin d'un conseil e-Commerce / Magento? SEO ? les deux? Contactez moi!

9 - Mass Action dans le grid magento

Article publié par : (Google+ Profile) Mis à jour le 20 Dec 2017 (publié depuis le )
Comment faire une action de masse dans le back office

Que pensez-vous de cet article ?

OR

Introduction

Comme l'indique la capture d'écran, 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.

  1. Edition du controllers adminhtml
  2. Edition du Grid

Edition du controllers 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 !

Que pensez-vous de cet article ?

Aucun avis pour le moment, soyez le premier à laisser le votre !