Neu AJAX Anfrage an Plugin senden

hzweiagmbh

Aktives Mitglied
6. Januar 2017
27
0
Guten Tag zusammen,

ich schreibe aktuell ein Plugin für unseren JTL Shop 5.
Leider scheitere ich an entsprechenden AJAX Calls...
Ich komme eigentlich eher aus der Shopware-Landschaft und bin dort mit den Vorgängen vertrauter, daher hoffe ich auf eure Hilfe..

Ich habe ein Bootstrap.php erstellt, welche ich nun nach und nach befülle.
Unter frontend/template/layout/header.tpl habe ich eine Template-Datei, welche mir auf jeder Seite einen Block anzeigt, wo der Benutzer Daten eingeben kann.
Diese brauche ich nun per AJAX in meinem Plugin, daran scheitere ich leider.

Ich habe versucht, das Ganze über den Hook HOOK_IO_HANDLE_REQUEST zu regeln. Leider bekomme ich da aber nichts. Wenn ich einfach nur versuche, $args['io'] im error_log auszugeben und dann return [ 'success' => 'true', 'data' => $args ]; mache, bekomme ich einen Fehler 500 "Not registered". Ich habe dann auch versucht, den Ajax Call wie folgt zu machen:
JavaScript:
$.evo.io().call('hzweia_kbaplugin.kbagewaehlt', $('#kbaHsn').val() + $('#kbaTsn').val(), this, function(error, data) {
      if(error) {
        return;
      }
      console.log(data.data);
    });
  });

Da bekomme ich zwar keinen Fehler, bekomme aber leider auch keine Daten zurück.

Mein ursprünglicher AJAX-Call sah so aus:
JavaScript:
$.ajax({
    type: 'POST',
    url: '/io.php',
    data: {
        'io': JSON.stringify({
           'name': 'KBA',
           'params': [{'value': 'TEST'}]
           })
    },
    success: function(result){
        console.log(result);
    },
})

Damit klappts aber leider nicht. Ich habe es zum Laufen bekommen, indem ich mir eine eigene PHP-Datei geschrieben habe, an welche ich den Call sende. Das ist aber, soweit ich das blicke, bei JTL Shop 5 dank des EventDispatchers eigentlich nicht mehr Sinn der Sache...

Meine Bootstrap.php sieht so aus:

PHP:
<?php declare(strict_types=1);
/**
 * @package Plugin\hzweia_kbaplugin
 * @author  Stefan Schulte - HZWEIA
 */

namespace Plugin\hzweia_kbaplugin;

use JTL\Events\Dispatcher;
use JTL\Plugin\Bootstrapper;
use JTL\Smarty\JTLSmarty;
use JTL\IO\IO;

/**
 * Class Bootstrap
 * @package Plugin\hzweia_kbaplugin
 */
class Bootstrap extends Bootstrapper
{
    /**
     * @inheritdoc
     */
    public function boot(Dispatcher $dispatcher): void
    {
        parent::boot($dispatcher);
        $plugin = $this->getPlugin();
        $db     = $this->getDB();
        $cache  = $this->getCache();
        $dispatcher->listen('shop.hook.' . \HOOK_ARTIKEL_PAGE, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_LETZTERINCLUDE_INC, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_ARTIKEL_CLASS_FUELLEARTIKEL, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_ATTRIBUT_CLASS_LOADFROMDB, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_GLOBALINCLUDE_INC, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_SMARTY_OUTPUTFILTER, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_CORE_SESSION_CONSTRUCTOR, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_GET_ALL_CATEGORIES, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_PRODUCTFILTER_GET_BASE_QUERY, function ($args) use ($plugin, $db, $cache) {
            // implement me
        });
        $dispatcher->listen('shop.hook.' . \HOOK_IO_HANDLE_REQUEST, function ($args) use ($plugin, $db, $cache) {
            error_log("AJAX!");
            error_log(print_r($args, TRUE));
            $io = $args['io'];
            $io->register('hzweia_kbaplugin.herstellergewaehlt', [$this, 'herstellergewaehlt'])
                ->register('hzweia_kbaplugin.modellgewaehlt', [$this, 'modellgewaehlt'])
                ->register('hzweia_kbaplugin.typgewaehlt', [$this, 'typgewaehlt'])
                ->register('hzweia_kbaplugin.kbagewaehlt', [$this, 'kbagewaehlt']);
        });
    }
 
    public function kbagewaehlt($params)
    {
        error_log(print_r($params['io'], TRUE));
        error_log(print_r($_REQUEST, TRUE));
        error_log(print_r($_POST, TRUE));
        return [
          'success' => 'true',
          'data' => 'DAS IST JA GEIL',
        ];
    }

Ich hatte schon andere Varianten, aber nichts lief...

Wäre vielleicht jemand so freundlich und gibt mir eine kurze Einweisung, wie ich vernünftig AJAX Calls verarbeite?

Danke euch!
 

hzweiagmbh

Aktives Mitglied
6. Januar 2017
27
0
Hallo FPrüfer,

vielen Dank, den Beitrag hatte ich bisher nicht gesehen.
Kannst du mir vielleicht noch eine kurze Erklärung geben, wofür die Parameter bei $evo.io.call() stehen?
JavaScript:
$.evo.io().call(
    'meine_plugin_id.meinAjaxCall',
    {meineAjaxVariable: 'Hello world!'},
    {},
    function (error, data) {
        ... do some stuff if ajax call returns
    }

Den Call an meine Funktion verstehe ich - meine eigenen Variablen auch. Wofür steht das leere Array danach?
Bei vielen Calls im Standardplugin stehen da Angaben wie "this" oder "that".

Danke dir!
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Neue Kundengruppe bekommt nur "Preis auf Anfrage" angezeigt User helfen Usern - Fragen zu JTL-Wawi 6
Neu Kunde Anfrage nach Angebot ohne Adresse User helfen Usern - Fragen zu JTL-Wawi 2
Webinar: Unser neues Shopware5-Plugin für das JTL-Fulfillment Network inklusive Live-Demonstration Messen, Stammtische und interessante Events 0
Neu plugin template smarty variabel $plugin ist null JTL-Shop - Fehler und Bugs 1
JTL-SHOP 5.1.1 - Die Plugin-ID ist bereits in der Datenbank vorhanden (FEHLERCODE 90) Upgrade JTL-Shop4 auf JTL-Shop5 2
Neu Plugin Bonuspunkte Treuepunkte für JTL 5 Plugins für JTL-Shop 0
Neu DHL Wunschpaket Plugin für JTL Shop 5.0 lässt sich nicht installieren Plugins für JTL-Shop 2
Neu Plugin um Script in Header und/oder Footer einzutragen Plugins für JTL-Shop 1
JTL Update nach Plugin aktivierung ist der admin bereich weiß Upgrade JTL-Shop4 auf JTL-Shop5 1
Neu Suche PopUp Plugin Global/Sidewide Plugins für JTL-Shop 7
Neu Gibt es ein Shopfinder-Plugin mit Postleitzahlensuche für den JTL Shop 5? Plugins für JTL-Shop 1
Neu IT-Recht Kanzlei AGB Plugin von Lilfoot - Kontosperrung bei Google Shopping Plugins für JTL-Shop 2
Neu Bug im JTL Paypal 2.1.0 Plugin JTL-Shop - Fehler und Bugs 3
Neu plugin template datei mit $parent_template_path JTL-Shop - Fehler und Bugs 1
Nach Installation von Plugin Fehlermeldung Einrichtung JTL-Shop5 6
Neu Update PayPal Plugin 2.1.0 nicht möglich Plugins für JTL-Shop 0
Weiße Seite Pluginverwaltung bei Plugin Reaktivierung nach Upgrade Upgrade JTL-Shop4 auf JTL-Shop5 6
Neu Fehler beim Erstellen des GoogleShopping.xml (Plugin) JTL-Shop - Fehler und Bugs 0
Neu Amazon Pay Plugin mit JTL Shop 5 Consent Manager kompatibel? Plugins für JTL-Shop 6
Neu Amazon Pay - Shop 5 Plugin lässt sich nicht installieren Plugins für JTL-Shop 5
Neu Mollie plugin - Beschreibung der zahlarten hinterlegen Plugins für JTL-Shop 1
Neu JTL Shop RMA Formular - Plugin JTL-Shop - Ideen, Lob und Kritik 6
Neu Neue Plugins erscheinen nicht im Plugin-Manager Plugins für JTL-Shop 8
Neu Plugin Migrations werden beim deinstallieren nicht zurück gesetzt JTL-Shop - Fehler und Bugs 0
Neu JTL-Vouchers für Shopware 5 Plugin Shopware-Connector 1
Neu paypal plugin auf entwicklungsstand Plugins für JTL-Shop 5
Neu Compilieren ohne Theme-Editor-Plugin per IDE Technische Fragen zu Plugins und Templates 3
Neu Gibt es ein GUTES und für Kunden INTUITIVES Plugin für DHL Packstation? Plugins für JTL-Shop 5
Neu Plugin Google Shopping - Kontosperrung wegen Wasserzeichen Plugins für JTL-Shop 1
Neu JTL Shop 4 - Plugin SQL Procedure Technische Fragen zu Plugins und Templates 4
Neu Plugin: "JTL Theme Editor" in Shop 5 - Fehler beim Speichern der Datei. Allgemeine Fragen zu JTL-Shop 6
Neu GELÖST Connector Plugin lässt sich nicht aktivieren. WooCommerce-Connector 0
Neu 📢 Plugin "Mail nach Newsletter Aktivierung" by NETZdinge.de Plugins für JTL-Shop 0
Neu JTL5.1.1 Weiße Seite im Plugin-Manager Allgemeine Fragen zu JTL-Shop 1
Neu Google Shopping Plugin - Energieeffizienzklasse Plugins für JTL-Shop 0
Beantwortet Plugin entfernen? SEO-Cleaner [35 Fehler: XML-Version entspricht nicht der Konvention.] Betrieb / Pflege von JTL-Shop 2
Neu In Chrome, Header lädt jedes mal sichtbar NEU, Nova Child mit JTL-Header Plugin JTL-Shop - Fehler und Bugs 2
Neu 📢 Plugin: Social Tool mit After Buy Share by NETZdinge.de Plugins für JTL-Shop 0
Neu Google Shopping Plugin - Exportdatei wird nicht erzeugt Plugins für JTL-Shop 0
Neu Plugin für DHL Wunschpaket Standort Fehler? Plugins für JTL-Shop 28
Neu Slider Plugin wie z.B. Slider Revolution für WP Plugins für JTL-Shop 0
Neu Mollie Webstollen Plugin Plugins für JTL-Shop 0

Ähnliche Themen