Nach Upgrade auf 4.10.8 alle Ajax Zuordnen Fenster gehen nicht mehr

Hallo zusammen,

ich habe mein Shop von 4.9.9 nach 4.10.8 upgraded, und um auf PHP7.2 zu laufen, habe ich auch ein paar Änderungen nach einem Thread https://oxidforge.org/de/oxid-eshop-fur-php-7-patchen.html gemacht, hauptsächlich von mysql ext. to mysqli gewechselt. Es hat alles funktioniert, bis ich heute versuchte, einem Artikel eine Attribute zuzuordnen. Da merke ich, in dem Popup-Fenster werden keine Attributen mehr angezeigt, sowohl die noch nicht zugeordneten als auch die schon zugeordneten. Beide Seiten sind einfach leer. Auch bei anderen Popup wie Attributen zu Kategorien, oder Zahlungsarten zu Ländern, alles leer. Ich habe in den Tabellen geschaut, die Zuordnungen sind alle da, es wird nur nicht mehr in dem Fenster angezeigt.

Ich weiss nicht was los ist. Ich habe iDebug auf 7 gesetzt, es wird gar kein Fehler angezeigt. In SQL log wird nicht mal die Tabelle oxobject2attribute gelesen. Also ich vermute die Ajax calls gehen nicht mehr, nur warum? In Javascript von article_attribute.tpl habe ich den Ajax call gefunden (für mein lokalen Dev): https://localhost/admin/oxajax.php?editlanguage=0&force_admin_sid=81db22f1e6fc225e8e5c0c8d4bab24dc&stoken=7D482736&cmpid=container2&container=article_attribute&oxid=007e5ec0b4b0438f1b822ebbd7b7dfd3

Selbst wenn ich diesen Link direkt in Browser ausführen, kommt keine JSON String zurück. Irgendwie nach Upgrade geht so ein Call nicht mehr. Weiss jemand warum?

VG, fire

Nachtrag: mit F12 habe ich network log geschaut, wenn ich das Fenster aufmache, geht keine Request raus! Es erklärt schon warum ich nichts sehe, aber woran liegt es…

Wahrscheinlich spielt Dir hier Dein Browser einen Streich. Glaube es gab dazu im Forum schon einen eigenen Thread. Um dies zu verifzieren ob meine Vermutung stimmt würde ich Dich bitten es in anderen Browsern auszuprobieren.

1 Like

Vielen Dank, habe vorher nicht die richtigen Keywords benutzt, sonst hätte ich den Thread gefunden. Werde ich es einspülen und testen. Melde mich bald hier falls es behoben ist.

LG

Ich kann jetzt bestätigen, dass das Problem nun behoben wird. Vielen Dank für die Hilfe!

Ich habe noch zwei Anmerkungen:

  • Ich merke, dass die Dateien in Deinem Fix Windows-Ending haben. Es macht den Vergleich mit oxid-Code unmöglich in Eclipse. Habe die alle zuerst nach UNIX-Ending umgewandelt, dann ist das Problem gelöst.
  • Aus irgendeinem Grund hat Deine Datei oxsystemrequirements.php immer eine leere Zeile zwischen den originalen Zeilen, ich vermute es ist auch ein Zeilenumbruch-Ding. Es macht auch hier den Vergleich kaputt, hier habe ich nur die Änderung manuell vorgenommen.

Ich hoffe mein Feedback anderen auch helfen könnte.

Wer benutzt denn heutzutage noch Eclipse? :upside_down_face:
Aber danke für den Hinweis.

lol ja bin zu faul um andere Tools anzuschauen, da ich nur gelegentlich programmiere. Hättest Du einen Vorschlag für php-IDE, mit Git Integration? Eclipse ist manchmal schon langsam und nicht mehr so handlich wie es schonmal war… schöne alte Zeit…

phpStorm, kostet allerdings.

1 Like

danke für den Tipp. phpStorm ist nicht so günstig, für seriöse Entwicklung ist aber super. Ich muss mal überlegen ob es für mich lohnt, da ich nur ab und zu mal programmiere.

Ich wundere mich noch etwas über den Wurzel des Problem: while-each loop ist nur deprecated in PHP7.2, daher müsste es eigentlich noch weiter funktionieren? Vor allem hat oxbase.php noch diese alte Konstruktur, es funktioniert noch alles:

public function assign($dbRecord)
{
if (!is_array($dbRecord)) {
return;
}

    reset($dbRecord);
    while (list($sName, $sValue) = each($dbRecord)) {

        // patch for IIS
        //TODO: test it on IIS do we still need it
        //if( is_array($value) && count( $value) == 1)
        //    $value = current( $value);

        $this->_setFieldData($sName, $sValue);
    }

    $sOxidField = $this->_getFieldLongName('oxid');
    $this->_sOXID = $this->$sOxidField->value;

} 

Könntest Du mir noch kurz erläutern, wieso es an dieser Stelle nicht funktioniert hat?

Hallo, da magst wegen der Bezeichnung Recht haben, aber es geht halt nicht anders.

Der Fix ist eine Sammlung von festgestellten Fehlern, die ständig erweitert wird und wurde.
Oxbase ist seit geraumer Zeit auch dabei, aber nicht online, weil ich keine Zeit hatte. Ein Fehler im Zsh. mit oxbase ist z.B. in der Statistik zu finden.