Neu Plugin kann nicht auf Datenbank zugreifen

Th3_J0k3

Neues Mitglied
13. Oktober 2020
19
1
Moin,
Ich versuche durch einen Ajax Call von einem PHP File eines Frontendlinks auf die Datenbank zuzugreifen, doch ich kriege ständig den Fehler: POST 500 (Internal Server Error). Wenn ich nur einen String o.Ä. rausgebe und die Datenbankabfrage lösche, funktioniert alles. Es muss also an dem Datenbankzugriff liegen.

PHP im Frontendlink:
PHP:
function getFromDatabase(){
    Shop::DB()->select('tartikel', 'kArtikel', $artikel_id); // $artikel_id ist vorher definiert.
}


if(!empty($_POST['action'])){
    if($_POST['action'] == 'get_price'){
        if(!empty($_POST['tType']) && !empty($_POST['tSurface']) && !empty($_POST['tLength']) && !empty($_POST['tWidth'])){
            echo getFromDatabase();
        }
    }
}

Ajax Call:
JavaScript:
    $.ajax({
        type: 'post',
        url: 'frontendlink_1.php',
        data: {
            'action': 'get_price',
            'tType': active_params.type,
            'tSurface': active_params.surface,
            'tLength': active_params.length,
            'tWidth': active_params.width
        },
        success: function(response) {
            document.getElementById("priceLabel").innerHTML = response;
        },
    });
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.359
340
Halle (Saale)
Wenn du an eine eigene php-Datei postest, kenn die natürlich auch den ganzen Shopcode nicht.
Du musst also entweder z.B. an die index.php posten und einen Hook nutzen, oder die includes/globalinclude.php requiren, damit der Autoloader ausgeführt und der Shop initialisiert werden.
 

Th3_J0k3

Neues Mitglied
13. Oktober 2020
19
1
Wenn du an eine eigene php-Datei postest, kenn die natürlich auch den ganzen Shopcode nicht.
Du musst also entweder z.B. an die index.php posten und einen Hook nutzen, oder die includes/globalinclude.php requiren, damit der Autoloader ausgeführt und der Shop initialisiert werden.

Danke für die Antwort! Sollte das in einem FrontendLink nicht eigentlich automatisch geschehen?
 

SamSoooM

Mitglied
1. Februar 2021
10
0
Hallo Guten Tag,
Kann jemand mir helfen bitte.
ich habe die folgende Funktion in Javascript und versuche sie durch eine Ajax Call durch den HOOK HOOK_IO_HANDLE_REQUEST - 213 aufzurufen

habe versucht, wie im Kommentar erwähnt, an die index.php zu posten
Wenn du an eine eigene php-Datei postest, kenn die natürlich auch den ganzen Shopcode nicht.
Du musst also entweder z.B. an die index.php posten und einen Hook nutzen, oder die includes/globalinclude.php requiren, damit der Autoloader ausgeführt und der Shop initialisiert werden.


JavaScript:
$(document).on('change', selectorBrand, function (event) {
        let currentBrand = $(this).find('option:selected').data('brand');
        resetDisplacements();
        resetModels();
        resetYears();

        $.ajax({
                type: 'POST',
                url: 'index.php',
                data: {
                    'io': JSON.stringify(
                        {
                            'name': 'getDisplacements',
                            'params': [{'brand': currentBrand}]
                        }
                    ),
                }
            }
        ).done(function (data) {
            if (data.success) {
                setDisplacements(data.displacements);
            } else {
                console.log('couldn\'t, load displacements for ' + currentBrand);
            }
        });
    });


wir wollen unser Shop zu Shop 5 updaten und wollen zuerst unsere eigenen Plugins umzuschreiben und testen
bin noch neu hier im Shop 5 und mit dem dispatcher-> listener auch
ich will die Funktion getDisplacements() in IO registrieren wie kann ich das machen bitte?
im Bootstraper Klasse :

PHP:
namespace Plugin\getor_bike_filter;

use JTL\Events\Dispatcher;
use JTL\Plugin\Bootstrapper;
use JTL\Shop;
use JTL\Smarty\JTLSmarty;
use JTL\IO\IO;
use JTL\Helpers\Request;
use Plugin\getor_bike_filter\classes\BikeFilter;
use JTL\Plugin\BootstrapperInterface;

class Bootstrap extends Bootstrapper implements BootstrapperInterface{

public function boot(Dispatcher $dispatcher)
   {
       parent::boot($dispatcher);
       $plugin       = $this->getPlugin();

       $dispatcher->listen(
           'shop.hook.' . \HOOK_IO_HANDLE_REQUEST , function (array &$args){
             $args['io']->register('getDisplacements', getDisplacements );
             $args['io']->register('getModels', getModels);
             $args['io']->register('getYears', getYears);
             $args['io']->register('setActive', setActive);
             $args['io']->register('setInactive', setInactive);
       });



       $dispatcher->listen(
           'shop.hook.' . \HOOK_SMARTY_OUTPUTFILTER,
           function (array &$args){
             $this->hook140();
           }
       );

   }

 function getDisplacements($params)
     {
         if (!isset($params['brand'])) {
             return [
                 'success' => false,
             ];
         }
         $brand = $params['brand'];
         $displacements = BikeFilter::findDisplacementsByBrand($brand);
         return [
             'success' => true,
             'displacements' => $displacements,
         ];
     }

}


Dankeschön !
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.359
340
Halle (Saale)
Das was da steht ist jedenfalls kein gültiger PHP-Code?
In IO::register() musst du als zweiten Parameter schon einen Callback angeben - das soll scheinbar die Methode getDisplacements() in der Bootstrapper-Klasse sein?

Dann sähe ein Minimalbeispiel ungefähr so aus:
Code:
<?php

namespace Plugin\getor_bike_filter;

use JTL\Events\Dispatcher;
use Plugin\getor_bike_filter\classes\BikeFilter;
use JTL\Plugin\Bootstrapper;

class Bootstrap extends Bootstrapper
{
    public function boot(Dispatcher $dispatcher)
    {
        parent::boot($dispatcher);
        $dispatcher->listen(
            'shop.hook.' . \HOOK_IO_HANDLE_REQUEST , function (array &$args){
            $args['io']->register('getDisplacements', [$this, 'getDisplacements']);
        });
    }

    public function getDisplacements($params)
    {
        if (!isset($params['brand'])) {
            return [
                'success' => false,
            ];
        }
        $brand = $params['brand'];
        $displacements = BikeFilter::findDisplacementsByBrand($brand);
        return [
            'success' => true,
            'displacements' => $displacements,
        ];
    }

}
 
  • Gefällt mir
Reaktionen: SamSoooM
Ähnliche Themen
Titel Forum Antworten Datum
Neu Neues Plugin: Google Translate / Übersetzer (DSGVO-konform und weitere Features) Plugins für JTL-Shop 1
Neu Händlerbund Plugin lässt sich nicht installieren Shop ver. 5.3.0 Plugins für JTL-Shop 1
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 0
Neu Neues Plugin: Instagram-Feed Portlet (Als Galerie- oder Slideransicht und weitere Features) + 3x kostenlose Lizenzen Plugins für JTL-Shop 3
Neu 🌟Neues Plugin: Bounce Landingpage Plugins für JTL-Shop 5
Neu 504 Gateway Time-Out nginx bei Plugin-Updates Gelöste Themen in diesem Bereich 10
Neu Unterstützung bei JTL5-Shop-Überarbeitung gesucht - Template/Plugin uvm. Dienstleistung, Jobs und Ähnliches 1
Neu Erledigt - Plugin PayPal Checkout, Update auf 1.4.0, Komplettabsturz Plugins für JTL-Shop 1
Neu Paypal Plugin erzeugt "Quirks Mode" Betrieb / Pflege von JTL-Shop 0
Neu Mail-Versand & Plugin Doku Technische Fragen zu Plugins und Templates 2
Neu Variationen im Shop Auswahl zurücksetzen (Plugin?) Betrieb / Pflege von JTL-Shop 3
Neu NEU ✔️ PDF-Angebots-Plugin für den JTL-Shop 5 - PDF Angebote von der Produktseite oder aus dem Warenkorb heraus generieren B2C / B2B Plugins für JTL-Shop 5
Neu Neues Plugin: Hersteller Slider Portlet (Zentrierungs- oder Schwarz/Weiß-Modus, Responsive Anpassung..) inkl. 5 kostenlosen Lizenzen Plugins für JTL-Shop 4
Neu Plugin KBA Finder Implementierung/Darstellungsänderung Plugins für JTL-Shop 0
Neu Custom Template für Custom Artikel mit Plugin? Plugins für JTL-Shop 0
Neu JTL Connector Plugin Aktivierunf [Fehlermeldung] WooCommerce-Connector 1
Neu Erfahrung mit LS-Cache Plugin Technische Fragen zu Plugins und Templates 10
Neu 🌟Neues Plugin: FRASPY Altersprüfung & IdentitätsCheck Plugins für JTL-Shop 3
Neu 🎉 Neues Plugin: "Versandkosten und Lieferzeit automatisch beziehen - UPS Extension" 🎉 Plugins für JTL-Shop 2
Neu Neues Plugin: Formular Portlet (Drag&Drop Dateiupload by FilePond, Kontakt, Retoure, Reklamation, Gewerbenachweis..) Plugins für JTL-Shop 10
Neu Neues Plugin - Solar Steuerfrei (Mehrwertsteuerbefreiung nach §12 Abs. 3 UStGt für Solar- und Photovoltaikanlagen) Plugins für JTL-Shop 8
Neu Plugin Mail senden - Cc / Bcc Technische Fragen zu Plugins und Templates 4
Neu [Gelöst] IT Rechtskanzlei AGB Plugin Fehler "Plugin wurde nicht gefunden" Plugins für JTL-Shop 4
Neu neues Paypal-Checkout (plugin) verhindert Bestellung - keine Zahlungsarten angezeigt (hängt) Betrieb / Pflege von JTL-Shop 8
Neu Problem mit Plugin-Aktivierung und WooCommerce-Kompatibilität WooCommerce-Connector 2
Neu CiN TrackID-Import Plugin User helfen Usern - Fragen zu JTL-Wawi 12
Neu Workflow Aktion E-Mail senden kann nicht Plain und HTML Email zusammen versenden Arbeitsabläufe in JTL-Wawi 6
Neu Wo kann ich einstellen, welche Rechnungsvorlage "gezogen" wird Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 13
Neu Amazon Prime - DHL Versandlabel kann nicht gedruckt werden "Ein Prime Versandlabel wurde nicht gekauft, da kein verfügbares gefunden wurde." JTL-ShippingLabels - Fehler und Bugs 0
Neu Versandschein für Schweiz kann nicht gedruckt werden folgende Fehlermeldung JTL-ShippingLabels - Fehler und Bugs 1
Neu kann man in List & Label Zeilen auskommentieren User helfen Usern - Fragen zu JTL-Wawi 4
Kann ich eine email an die Wawi senden durch die dann ein neuer Auftrag generiert wird? (Daten müssen händisch vervollständigt werden...) JTL-Wawi 1.8 2
Neu Kann uns jemand beim Otto einrichten helfen? Dienstleistung, Jobs und Ähnliches 3
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu Wie kann ich im JTL-Shop einen Abwesenheitshinweis einstellen? Allgemeine Fragen zu JTL-Shop 1
Neu Wie kann ich eine Inventurliste als Excel- oder csv-Datei erstellen? Gelöste Themen in diesem Bereich 3
Wie kann ich eine Benachrichtigung bei einem Wareneingang auslösen mit einer Mail über die Artikel die eingebucht wurden JTL-Wawi 1.8 2
Neu Wie kann ich die vergebene Coupons sehen. Welche Kunde welchen Copoun Allgemeine Fragen zu JTL-Shop 0
Neu Woran kann es liegen, dass ein neu erstellter Connector-Verkaufskanal nicht in der Statusliste des Workers vorkommt? Shopify-Connector 2
Neu Wie kann ich Alt-Texte für Bilder an Shopify senden? Shopify-Connector 2
Neu syntaxfehler report.invoicebilltoaddress.country kann nicht interpretiert werden Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Wer kann bei uns ein EcoDMS einrichten? Dienstleistung, Jobs und Ähnliches 16
Verwiesen an Support TSE Modul wird nicht mehr erkannt, kann auch nicht wieder aktiviert werden, diverse Fehlermeldungen JTL-POS - Fehler und Bugs 1
In Bearbeitung Sunmi P2 kann keinen Barcode scannen JTL-POS - Fragen zu Hardware 5
Neu [Umfrage] - Was hälst du von Updates - Innovativ oder aufwendig? Wie kann es besser gehen? Installation / Updates von JTL-Shop 0
Neu Wie kann ich nicht mehr vorhandene ausländische USt-ID löschen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu PayPal - Benachrichtungen über Zahlung -> EMail. Wo kann man den Betreff bearbeiten? User helfen Usern - Fragen zu JTL-Wawi 6
Neu JTL WAWI Icecat Anbindung - Wer kann einrichten? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi läuft, aber ein Rechner hat den Pfad zur Datenbank verloren, Mandant kann nicht ausgewählt werden User helfen Usern - Fragen zu JTL-Wawi 3
Neu Versandart kann nicht gelöscht werden User helfen Usern - Fragen zu JTL-Wawi 0

Ähnliche Themen