Hook wird nicht mehr angesprungen

Ich habe ein Hook gesetzt, um bei der generierten PDF eine Variable zu übergeben. Bisher geht es. Und aus einem mir nicht erdenklichen Grund, wird dieser nicht mehr angesprungen.

Für mich ist der Code eigentlich richtig.

 

$this->subscribeEvent( 'Shopware_Components_Document::assignValues::after', 'AssignBarcodeValues'
);

    public function AssignBarcodeValues(Enlight_Hook_HookArgs $args)
    {
        $doc = $args->getSubject();
        $variables = $args->getSubject()->_order->__toArray();

        $Config = Shopware()->Plugins()->Frontend()->MDPlugin()->Config();

        $height = $Config->height;
        $codingType = $Config->codingType;
        $imageType = $Config->imageType;
        $size = $Config->size;



        $imagesrc= ($imageType !="HTML") ? "data:image/".strtolower($imageType).";base64,":"";
        //install via composer
        //composer require picqer/php-barcode-generator
        $barcodeFunction = 'Picqer\Barcode\BarcodeGenerator'.$imageType;
        $generator = new $barcodeFunction;
        //public function getBarcode($code, $type, $widthFactor = 2, $totalHeight = 30)

        /**
         * generating barcode only for articles
         */
        $barcode =array();
        foreach ($variables['Order']['_positions'] as $key => $data){

            if($data['articleID'] != '0')
            {
                $barcode[$key]= $imagesrc.base64_encode($generator->getBarcode($data['articleordernumber'].'/'.$variables['Order']['ordernumber'], constant("{$barcodeFunction}::{$codingType}"),$size,$height));

            }
        }
        $doc->_view->assign('Barcode', $barcode);
        //unset ($variables);
       }

In einem anderen entwickelten Plugin wird dieser Hook gesetzt und funktioniert.

		$this->subscribeEvent(
			'Shopware_Components_Document::assignValues::after',
			'onAssignValues'
		);

Aber beide kommen sich ja nicht in die Quere. Solange kein Wert an 3. Stelle angegeben wird, werden diese in der Reihenfolge ausgeführt, wie Sie installiert sind.

Oder sehe ich das falsch, weil das eine geht und das andere  nicht ?

 

Installiert ist Shopware 5.2.9

Hallo,

ich glaube, dass deine Code hat keine Probleme. aber könnten Sie prüfen, ob $barcode gibt einen Wert oder nicht.

und ob Sie können, post das Code des ‘onAssignValues’ Funktion.

Damit kann ich sehen,  was ist die unterschid

Hallo nochmal,

also Ihr Problem ist mit $variables.

in $variables gibt keine Key ‘Order’,  gibt Key ‘_order’ und Key ‘_positions’

Probieren Sie das nächstes Code :

        $barcode =array();
        foreach ($variables['_positions'] as $key => $data){

            if($data['articleID'] != '0')
            {
                $barcode[$key]= $imagesrc.base64_encode($generator->getBarcode($data['articleordernumber'].'/'.$variables['_order']['ordernumber'], constant("{$barcodeFunction}::{$codingType}"),$size,$height));

            }
        }
        $doc->_view->assign('Barcode', $barcode);

Viele Grüße

Ahmad.

Hallo

 

Genau das habe ich gestern auch rausgefunden. Irgendwas muss sich da seit den letzten Updates geändert haben, denn bis 5.2.7 lief es so.

Zudem hatte ich einige Konflikte mit Shopwarefiles, die wohl nicht den Versionen von 5.2.9 entsprachen, da die HAST-Werte unterschiedlich waren.

Nun läuft es.

 

Vielen Dank für Deine Hilfe und den Tipp !