ListingPriceTable dekorieren wirft Uncaught TypeError

Hallo :slight_smile:

Ich versuche mich gerade an meinem ersten Plugin und arbeite nach dieser Anleitung: Service extensions

Es geht darum, dass ich \Shopware\HBundle\SearchBundleDBAL\ListingPriceTable dekorieren will/muss.

Das Plugin lässt sich aktivieren, wirft aber folgenden Fehler:

Uncaught TypeError: Argument 1 passed to Shopware\\Bundle\\SearchBundleDBAL\\ConditionHandler\\PriceConditionHandler::__construct() must be an instance of Shopware\\Bundle\\SearchBundleDBAL\\ListingPriceTable, instance of MSAutoteile\\Bundle\\SearchBundleDBAL\\ListingPriceTable given, called in

die services.xml

und die ListPriceTable.php

originalservice = $service;
    }
    
    public function get(ShopContextInterface $context)
    {
        $query = $this->originalservice->get($context);
        
        $m = Shopware()->Front()->Request()->getParam("m");
        $mo = Shopware()->Front()->Request()->getParam("mo");
        $t = Shopware()->Front()->Request()->getParam("t");

        if ($mo && !$t) {
            $query->innerJoin(
                'product',
                'mto_s_articles_details_has_mto_types',
                'fzg',
                'fzg.s_articles_details_articleID = product.id AND fzg.mto_types_mto_models_id=' . $mo . ''
            );
        }

        if ($t) {
            $query->innerJoin(
                'product',
                'mto_s_articles_details_has_mto_types',
                'fzg',
                'fzg.s_articles_details_articleID = product.id AND fzg.mto_types_id=' . $t . ''
            );
        }
        
        var_dump ($query);
        
        return $query;
    }
}

 

Um ehrlich zu sein, kann ich damit gar nichts anfangen … ich betrete mit dem Plugin absolutes Neuland (also Shopware … bei OXID wär’s kein Problem^^) und weis mir grad nicht wirklich selbst zu helfen.

Der richtige Hinweis wäre also sehr nett :slight_smile:

Danke euch!

Fehler gefunden :slight_smile:

Da der Constructor von PriceConditionHandler nicht gegen das Interface, sondern die Klasse programmiert ist, musste ich meine Klasse ableiten.

Bin gerade an der gleichen Stelle, kannst du mir kurz auf die Sprünge helfen? Im Moment sieht das bei mir genauso aus wie bei dir. Was hast du geändert?

Wenn ich meine PHP-Klasse wie folgt ändere wird sie nicht aufgerufen:

 

OK habs hinbekommen.

In der services.xml folgendes:

In der Klasse: