Fehler in der Bestellhistorie (Kundenansicht)

Guten Abend Allerseits,

ich bin seit ein paar Tagen am basteln an dem OXID CE System. Alles schön und gut, bis ich heute auf einen Fehler gestoßen bin und die Ursache nicht finde.

Also folgendes:
Fehler auf der Seite: “Mein Konto” -> “Bestellhistorie”.
Fehler:

Fatal error: Call to a member function getOrderArticles() on a non-object in E:\xampp\htdocs\oxid mp\41fa86d5c1e8f410b5c9edf20860ccad^%%75^752^75201DD9%%account_order.tpl.php on line 124
Warenkorb:

Es sieht aus wie auf dem angehängten Screenshot.

Hier noch die Zeilen aus der Datei:

            <?php $_from = $this->_tpl_vars['order']->getOrderArticles(); if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['testOrderItem'] = array('total' => count($_from), 'iteration' => 0);
if ($this->_foreach['testOrderItem']['total'] > 0):
    foreach ($_from as $this->_tpl_vars['orderitem']):
        $this->_foreach['testOrderItem']['iteration']++;
?>
            <?php $this->assign('sArticleId', $this->_tpl_vars['orderitem']->oxorderarticles__oxartid->value); ?>
            <?php $this->assign('oArticleList', $this->_tpl_vars['oView']->getOrderArticleList()); ?>
            <?php $this->assign('oArticle', $this->_tpl_vars['oArticleList'][$this->_tpl_vars['sArticleId']]); ?>

Ich habe auch schon versucht, die saubere OXID CE 4.4.0 Version parallel zu installieren, leider kommt da der gleiche Fehler. Liegt es an meinem System oder ist die Version 4.4.0 noch nicht ganz korrekt? Hat das einer schon gehabt?

Zur Info: Der Testshop ist bei mir lokal auf dem Rechner installiert. Unter meiner Adresse gibt es also nichts hilfreiches.

Gruß
Paul :wink:

Hallo Paul,

im Demoshop sieht das ok aus. Gab’s vielleicht Datenverluste beim Download?

Gruß

Hi Marco,

wenn ich das wüsste. Ich habe bis jetzt nur diesen Fehler gemerkt, würde also vom Downloadfehler nicht ausgehen. Kannst Du mir sagen, welche Dateien hiervon betroffen werden? Dann könnte ich vielleicht mit den Dateien aus dem Demo-Shop versuchen :wink: Oder wenigstens die entsprechenden Stellen vergleichen…

Ich weiß inzwischen (arbeite mich in dem System erst ein…), dass die Datei “41fa86d5c1e8f410b5c9edf20 860ccad^%%75^752^75201DD9%%account_order.tpl.php” von den Dateien …/out/my_theme/tpl/account_order.tpl und …/core/oxorder.php (wo die entsprechende Class definiert ist). Habe auch schon versucht nur diese Dateien auszutauschen (Ordner “tmp” wurde dabei jedes Mal gelöscht).

Wie kann ich es noch überprüfen?

Moin,

der Downloadordner wird tatsächlich nur temporär befüllt (Smarty Cache) und kann gefahrlos geleert werden. Deshalb bringen auch Änderungen an diesen Dateien nix.

Die Fehlermeldung an sich sagt aus, dass das Template versucht eine Klasse aufzurufen, die an dieser Stelle nicht verfügbar ist. Deshalb wundert mich die Aussage, dass der Fehler auch bei einer frischen Installation auftaucht…

Lass doch mal eine oxchkversion drüber laufen.

Gruß

Hi,

sag mal, wann schläfst Du denn überhaupt? Oder arbeitest Du von Zuhause?
Ich mach gerade den Test. 2 Mal einfach ausgeführt -> es kam nur eine leere Seite. Eben noch das dritte Mal versucht, diesmal mit der Funktion, dass auch die OK-Dateien angezeigt werden sollen -> auch eine Leere Seite. In der Adressleiste steht nach dem Ausführen folgendes:

http ://localhost/oxid/oxchkversion.php?job=checker&listAllFiles=listAllFiles&=+Start+to+check+this+eShop+right+now+%28may+take+some+time%29+

Any ideas? :confused:

Hi Paul,

der Rechner funktioniert von zu Hause genau so wie aus dem Büro :slight_smile:

Wenn eine weisse Seite erscheint, weist das auf eine unterdrückte Fehlermeldung hin, die wahrscheinlich im error-log gelandet ist. Mit einiger Wahrscheinlichkeit läßt Dein localhost keinen Zugriff nach aussen zu. Firewall?

Gruß

So… ich weiß nichts mehr :frowning:

Auf meinem Testsystem hab ich den Test nicht zum Laufen gekriegt. Habe daraufhin den ganzen Shop auf dem Server installiert (ohne Demodaten, frisch von Eurer Seite heruntergeladen).

Adresse: http://oxid.paramente-gaida.de

Der gleiche Fehler wie auch auf dem Testserver lokal. Also oxchkversion gestartet. Folgendes kam dabei raus:

Edition CE
Version 4.4.0
Revision 28699

Summary
OK 751
Modified 0
Version mismatch 0
Unknown 2
Number of investigated files in total: 753

This OXID eShop was not modified and is fully original.

In der langen Liste mit OK’s kam aber nichts zu den angeblichen 2 “unknown”.

Im Testshop habe ich extra einen User eingerichtet. Die Zugangsdaten werde ich in einer PN schicken (muss ja nicht gleich jeder wissen).
Falls Du Zugang zu dem Testshop haben möchtest, einfach nur melden. Ist kein Problem für mich :wink: Würde es gerne aus der

Hehee… scheint doch ein Bug zu sein. Ich habs bei mir auf einem Debian Etch auch reproduzieren können. Im Demoshop ist nix davon zu sehen:

https://bugs.oxid-esales.com/view.php?id=1957

Gruß

Danke :slight_smile: Dann schauen wir mal, was das Development dazu sagt :wink:

Hi Marco,

ich weiß nicht ob das hilft, aber folgendes gerade herausgefunden:

Im Template “account_order.tpl” gibt es in der Zeile 87 folgendes:


[{foreach from=$order->getOrderArticles() item=orderitem name=testOrderItem}]

Also wird hier nach dem Objekt $order gesucht. Dieser soll (wenn ich das gut erkenne) in der Zeile 12 mit folgender Anweisung definiert werden:


[{foreach from=$oView->getOrderList() item=order }]

Die schöne Funktionalität [{debug}] hat mir aber verraten, dass das Objekt $order gar nicht definiert ist. In der Debug-Liste ist nämlich folgende Zeile zu finden:


{$order}  	false
{$orderlist} 	false

Ich weiß nicht, ob das dem Development hilft, ich denke aber, dass das schon der gute Weg ist. Da ich aber morgen früh wieder aufstehen muss, kann ich es jetzt nicht weiter verfolgen. Vielleicht könntest Du diese Info auch an die Kollegen weiterleiten :smiley:

Hi Paul,

danke für den Tip. Schauen wir, was bei rauskommt :wink:

Gruß

Hi Marco,

nach einer Pause, die ich wegen Klausuren an der Hochschule einlegen musste bin ich wieder aktiv am Shopanpassen :smiley:

Ich habe immer wieder mal nachgeschaut, ob das Development an dem Problem etwas gemacht hat, leider aber hat sich da nichts getan. Die haben wohl zu viel um die Ohren :rolleyes:

Nachdem ich mir das jetzt noch mal angeschaut habe und die ganze Vorgehensweise bei dem Aufbau dieser fehlerhaften Seite analysiert habe, konnte ich durch eine kleine Änderung im Template den Fehler doch noch beheben :smiley:

Die Zeile, die überprüfen soll, ob Bestellungen vorhanden sind (bei mir im Basic-Template ist das die Zeile Nr. 11):

[{if count($oView->getOrderList()) > 0 }]

Muss durch folgende Zeite ersetzt werden:

[{if $oView->getOrderCnt() >= 1 }]

Die “neue” Zeile habe ich aus der Anzeige der Bestellungsanzahl aus der Datei “inc/account_header.tpl”. Da wurde die Anzahl korrekt angezeigt, wiese also nicht auf die gleiche Weise an der fehlerbehafteten Stelle? :smiley:

Gerade habe ich auch in einem anderen Thread gelesen, dass ein anderer User den Fehler auf eine andere Weise behoben hat. Hier der Link:
http://www.oxid-esales.com/forum/showthread.php?t=5978

Teile das bitte dem Development mit, damit es für die nächste Version übernommen wird… Muss nicht sein :wink:

Hi,

Danke für die mögliche Lösung und den Link.

Teile das bitte dem Development mit, damit es für die nächste Version übernommen wird… Muss nicht sein

Weißt Du, dass Du selbst Kommentare im Bugtracker schreiben kannst?

Gruß

OK, gerade einen Account angelegt :wink: Dann mache ich es mal…

Super, Danke! :slight_smile:

Danke für den Tipp!
Ich hatte das selbe Problem nach der Installation.