Einfacher Methoden-Aufruf aus Backend mit Growl-Message

Hi, ich habe einen Backend-Controller der verschiedene Dinge tut. Das klappt auch alles wenn ich den Aufruf direkt über den Browser mache.

Jetzt hätte ich gern einen Menü-Eintrag im Backend der eine Methode des Controllers aufruft und die Rückgabe in einer Growl-Message ausgibt.

Quasi so, wie bei Einstellungen->Caches /Performance -> Shop Cache leeren.

Geht das und wenn ja wie?

Vielen Dank!

 

 

 

Aus meiner Wühlkiste: http://pastebin.com/0iBVX2xg

Lass deine app.js kein window erzeugen, sondern einfach nur eine growl message.

Viele Grüße

HI, danke für den Schnipsel. Das hat mich nun schon mal soweit gebracht, dass meine Methode ausgeführt wird. Ich bekomme im Backend aber dann folgenden Fehler:

Fehlermeldung: missing ; before statement

Stack-Trace

Ext.globalEval

 

meine app.js sieht so aus:

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL

/**
 * Aquatuning Software Development - Cache Clear - Bootstrap
 *
 * @category Aquatuning
 * @package Shopware\Plugins\AtsdCacheClear
 * @copyright Copyright (c) 2015, Aquatuning GmbH
 */

// {namespace name="backend/hqs/app"}

Ext.define( "Shopware.apps.Hqs",
    {
        // name
        name: "Shopware.apps.Hqs",

        // parent
        extend: "Enlight.app.SubApplication",

        // bulkload
        bulkLoad: true,

        // loadpath
        loadPath: '{url controller="Hqs" action="createArticlesImportFile"}',

        // views
        views:
            [
            ],

        // stores
        stores:
            [
            ],

        // models
        models:
            [
            ],

        // controllers
        controllers:
            [
                "Main"
            ],

        // launch the app
        launch: function()
        {
            // get this
            var me = this;

            // get the controller
            var mainController = me.getController( "Main" );

            Shopware.Notification.createGrowlMessage(
                "Alles klar!",
                "Toll gemacht!.",
                "HQS - Yay"
            );
        }

    });

 

Hi,

hast du überhaupt einen Main-Controller in deiner ExtJS-App? Sonst solltest du den Aufruf aus der “launch” Methode auch entfernen. Weiterhin ist die erste Zeile ein Copy&Paste-Fehler aus Aquatunings Beispiel:

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL

ist keine validate JS-Syntax :). Vermutlich hast du das nicht wirklich übernommen - aber ich wollte drauf hingewiesen haben zur Sicherheit :slight_smile:

Daniel

loadPath: ‚{url controller=„Hqs“ action=„createArticlesImportFile“}‘,

Das wird wahrscheinlich auch nicht korrekt sein. Du müsstest den ajax request innerhalb deiner app oder deines controllers machen.

Viele Grüße 

hi, ich habe einen Main-Controller angelegt. Diesen aber jetzt wieder entfernt und auch den Aufruf innerhalb von launch entfernt.

jetzt bekomme ich einen anderen Fehler:  Unexpected token ‚:‘. Parse error.

Die methode aus meinem Controller wird ausgeführt:

loadPath: ‚{url controller=„Hqs“ action=„createArticlesImportFile“}‘,

 

 

Das scheint also korrekt. Muss die Methode etwas zurückgeben? Aktuell wird ein json zurückgegeben, muss das evtl. ein bestimmte struktur haben?

 

Ich habe die Dateien jetzt noch ein mal komplett neu erstellt. nun funktioniert es. Scheinbar hatte ich noch irgendwo einen typo drin.

vielen Dank.