Warnings bei Varianten mit PHP 7.2 und OXID 4.10.8

Hallo,

die folgenden Warnungen werden im Live-System sporadisch auf den Produktseiten angezeigt, wenn eine Variante gewählt wird. Ohne weitere Änderungen am Shop-System verschwinden die Warnungen wieder. Kennt jemand das Problem oder hat einen Tipp wie der Fehler gefunden werden kann?

Warning: count(): Parameter must be an array or an object that implements Countable in htdocs/shop/application/models/oxdeliverysetlist.php on line 160

Warning: count(): Parameter must be an array or an object that implements Countable in htdocs/shop/application/models/oxdeliverylist.php on line 179

Warning: count(): Parameter must be an array or an object that implements Countable in htdocs/shop/application/models/oxbasket.php on line 1671

Warning: Cannot modify header information - headers already sent by (output started at htdocs/shop/application/models/oxdeliverysetlist.php:160) in htdocs/shop/core/oxutils.php on line 1164

P S
Die Views wurden bereits aktualisiert und der Ordner “tmp” gelöscht!


Das Thema “OXID CE 4.10.x und PHP 7.2” enthält die Lösung dafür

Hallo,

vielen Dank für die Rückmeldung.

Soweit klar. Die Warnung in oxdeliverysetlist.php Zeile 160 bekomme ich allerdings nicht beseitigt. Folgendes habe ich versucht:

    if( is_null(getViewName('oxdelivery')) ){
        $sTable = "";
    }else{
        $sTable = getViewName('oxdelivery');
   }

Die Warnung wird weiterhin angezeigt und falls die if greifen würde wird angezeigt “Shop offline!” Wie kann diese Warnung verhindert werden?

Die anderen Warnungen wurden erfolgreich wie folgt beseitigt:
oxdeliverylist.php on line 179

    //if (count($aGroupIds)) {
    if ($aGroupIds && count($aGroupIds)) {

oxbasket.php on line 1671

    // if (count($this->aDiscounts) > 0) {
    if (($this->aDiscounts && count($this->aDiscounts)) > 0) {

Hallo,

vielleicht habe ich eine Lösung mit dem “Null Coalesce Operator” gefunden. Dann müsste die Zeile 160 in der oxdeliverysetlist.php geändert werden in:

$sTable = getViewName(‘oxdelivery’) ?? “Default Value”;

Allerdings funktioniert es bei meinem Test nicht, weil sonst “Shop offline!” mit “Default Value” angezeigt würde. Hat jemand noch einen Tipp, um das Problem zu lösen?

Bin für jeden Tipp dankbar!

Du musst schon die richtige Datei aufmachen und/oder die Meldung aufmerksamer lesen :wink:

count(): Parameter must be an array or an object …

In dem Code von Dir ist weit und breit kein count() zu sehen.
Du bist höchstwahrscheinlich in der Datei “oxdelivery.php” statt “oxdeliverysetlist.php” gelandet.

Warning: count(): Parameter must be … oxdeliverysetlist.php on line 160

oxdeliverysetlist.php Zeile 160 sieht im Original so aus:

und könnte so gefixt werden: if($aGroupIds->count())

Hallo vanilla_thunder,

vielen Dank für den Tipp :slight_smile:

Ja, wer lesen kann ist klar im Vorteil :wink: Echt peinlich, in der falschen Datei zu suchen und wundern wo das count() wohl herkommt :frowning:

Wünsche allen ein gutes Wochenende und viel Erfolg!