Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

Appeler une action via un bouton dans le Backend
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 123
SUJET:

Appeler une action via un bouton dans le Backend

#40019
Brice
HotelsGrandParis
Expert Boarder
Messages: 105
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris - France Date anniversaire: 05/12

Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 4  
Bonjour,

Je souhaite appeler une controller/action dans le Backend via un bouton d'action :

J'ai mis le bouton en place, mais je n'arrive pas appeler mon action : voici le code que j'ai fait :

Dans app/code/monmodule/Block/Adminhtml/Button.php :

Code :


protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
        $this->setElement($element);
        
        $url = $this->getUrl('googlemaplocator/adminhtml_location/doUpdate');
        
        $html = $this->getLayout()->createBlock('adminhtml/widget_button')
                    ->setType('button')
                    ->setClass('form-buttons')
                    ->setLabel('Mise a jour de la table')
                    ->setOnClick("ajax_button('".$url."')")
                    ->toHtml();

        return $html;
}



Dans app/code/monmodule/controllers/Adminhtml/LocationController.php :

Code :


public function doUpdateAction()
{       
   exit('je rentre dans mon action');
}



Dans app/design/adminhtml/default/default/template/system/config/js.phtml :

Code :



function ajax_button(myurl)
{
$('loading-mask').style.display='block'; // pour afficher le loader
new Ajax.Request(myurl, {
 method: 'get',
 onComplete: function(transport) {
     $('loading-mask').style.display='none' // pour enlever le loader
 }
});
}



Mais malheureusement, je n'arrive pas à atteindre mon "googlemaplocator/adminhtml_location/doUpdate"
 
Brice
HotelsGrandParis
www.hotelsgrandparis.com
Book Inn France
www.bookinnfrance.com
L'administrateur a désactivé l'accès public en écriture.
#40021
CaPiT
Développeur Magento
Platinum Boarder
Messages: 1832
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris Date anniversaire: 07/05

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 51  
Bonjour.

Réussis-tu à atteindre le controlleur en entrant directement l'url dans ta barre d'adresse?
Code :

http://www.tonsite.com/index.php/googlemaplocator/adminhtml_location/doUpdate
 
Dernière édition: 02/12/10 à  04:26 Par CaPiT.
Ronan Capitaine
L'administrateur a désactivé l'accès public en écriture.
#40024
Brice
HotelsGrandParis
Expert Boarder
Messages: 105
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris - France Date anniversaire: 05/12

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 4  
Merci CapiT pour ta réponse et ta question est excellente :

C'est effectivement bizarre, je me suis basé sur l'url de mon module

Code :

http://monsite/index.php/googlemaplocator/adminhtml_location/edit/id/1/key/ea5c935901cc2be18dffc4efff6303ac/


Code :

$url = $this->getUrl('googlemaplocator/adminhtml_location/doUpdate');


Mais quand je mets cette url dans mon browser :
Code :

http://monsite/index.php/googlemaplocator/adminhtml_location/edit/id/1/key/ea5c935901cc2be18dffc4efff6303ac/


Je reviens directement à l'accueil du Backend, c'est vrai que j'aurai dû commencer par tester cette url, du coup, tu me conseille de mettre quoi pour l'url ?
 
Brice
HotelsGrandParis
www.hotelsgrandparis.com
Book Inn France
www.bookinnfrance.com
L'administrateur a désactivé l'accès public en écriture.
#40026
CaPiT
Développeur Magento
Platinum Boarder
Messages: 1832
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris Date anniversaire: 07/05

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 51  
Ton module s'appelle bien googlemaplocator?
As-tu un routers dans la balise <global> du config.xml, sous cette forme?
Code :

<admin>
        <routers>
            <Nm_Googlemaplocator> <!-- Attention aux Min/Maj -->
                 <use>admin</use>
                <args>
                    <module>Nm_Googlemaplocator</module>
                    <frontName>googlemaplocator</frontName>
                </args>
            </Nm_Googlemaplocator>
        </routers>
    </admin>

 
Ronan Capitaine
L'administrateur a désactivé l'accès public en écriture.
#40027
Brice
HotelsGrandParis
Expert Boarder
Messages: 105
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris - France Date anniversaire: 05/12

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 4  
Oui je confirme par contre le bouton est placé dans ma section "Config" du Backend
Mais dans mon fichier "config.xml" de mon module "GooglemapLocator", est bien présent la section concernant admin/routers
 
Brice
HotelsGrandParis
www.hotelsgrandparis.com
Book Inn France
www.bookinnfrance.com
L'administrateur a désactivé l'accès public en écriture.
#40029
CaPiT
Développeur Magento
Platinum Boarder
Messages: 1832
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris Date anniversaire: 07/05

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 51  
Le frontname du routers est bien tout en minuscule?
Code :

<frontName>googlemaplocator</frontName>

Es-tu sûr qu'avec l'url, il ne va pas dans le controlleur?
Préfères les Mage::log() aux exit() ou echo, car il peux y avoir des redirections.
 
Ronan Capitaine
L'administrateur a désactivé l'accès public en écriture.
#40032
Brice
HotelsGrandParis
Expert Boarder
Messages: 105
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris - France Date anniversaire: 05/12

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 4  
Oui, tout est écrit en minuscule.
Mais j'arrive à accéder à l'édition d'un enregistrement :

[code]monsite/index.php/googlemaplocator/admin...be18dffc4efff6303ac/(/code]

Cette url fonctionne parfaitement.

Par contre je ne connaissais pas Mage::log. Je vais le tester de suite.
 
Brice
HotelsGrandParis
www.hotelsgrandparis.com
Book Inn France
www.bookinnfrance.com
L'administrateur a désactivé l'accès public en écriture.
#40033
CaPiT
Développeur Magento
Platinum Boarder
Messages: 1832
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Paris Date anniversaire: 07/05

Re:Appeler une action via un bouton dans le Backend

Il y a 7 Années, 7 Mois
Karma: 51  
Ok, pour utiliser les Mage::log, il faut d'abord les activer.
Donc Système -> Configuration -> Développeur -> Paramètres de log -> activé: oui.
Ca va aller écrire dans le fichier var/log/system.log (Ou créer le fichier s'il n'existe pas).
Il faut vérifier qu'il y a les droits en écriture.
 
Ronan Capitaine
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 123
Modérateur: Gabriiiel, ILOA, zuiko