5.2.16 PDF Hooks werden nicht mehr angesprungen?

Ab Version 5.2.16 werden folgende events und damit verbundene hooks nicht mehr erkannt.
Weder

 $this->subscribeEvent( 'Shopware_Components_Document::render::before', 'afterAssignValuesToPdf' ); 

noch

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

feuert “hook” Funktionen ab - z.B. so eine wie unten.
 

	//Simple hook/event test 
	public function afterAssignValuesToPdf(Enlight_Hook_HookArgs $args)
    {
		$view = $args->getSubject()->_view;
        $testarray[] = [
			'id' => "123",
			'articleordernumber' => "TEST2327",
            'title' => "Testtitel",
			'name' => "Testname",
            'surcharge' => "0",
            'surcharge_quantity' => "1",
        ];
		$view->assign('testPositions', $testarray);
	}

Und somit werden die im hook gesetzten Variablen/Arrays nicht an Smarty in dem PDF-Template (Bare/documents/index.tpl) übergeben.

Bis SW 5.2.4 - 5.2.9 haben die events von
“Shopware_Components_Document::render::before” oder
 “Shopware_Components_Document::assignValues::after”
und die hooks dazu einwandfrei funktioniert …

Kann das jemand bestätigen? Es handelt sich hier möglicherweise um einen schwerwiegenden Fehler im Shopware Core!

Ich kann das aktuell nicht bestätigen, muss heute/morgen aber auch an die Stelle dran und kann dann ggf. mehr sagen. Allerdings würde es mich doch stark überraschen, wenn es nicht mehr gehen sollte. Da müsste m. E. dann schon eher ein generelles Problem mit dem Hook-Systtem vorhanden sein, was dann sicherlich schon mehreren Leuten aufgefallen sein dürfte. 

Wurde der Cache noch mal komplett gelöscht und das Plugin noch mal neu installiert? Gibt es ggf. ein anderes Plugin, welches ggf. ein replace Hook auf assignValues vornimmt?

Hi,
ja, alles geleert im Backend und auch per FTP in var/cache. “Bootstrap” 100 Mal neu geladen.

Es handelt sich nicht generell um das Hook-System (zum Glück) sondern nur um die Klasse: 

Shopware_Components_Document

Und nur seit SW 5.2.16 - in der Vorgängerversion 5.2.9 ging ja alles!

Best, Konrad

Auch in 5.2.16 ist die Klasse wie folgt definiert:

class Shopware_Components_Document extends Enlight_Class implements Enlight_Hook

Und die Methoden sind auch weiterhin wie folgt definiert:

public function assignValues();
public function render($_renderer = "");

Warum sollte also ein before/after Hook nicht mehr funktionieren? Entweder liegt hier ein generelles Problem mit dem Hook System vor oder es liegt an deiner lokalen Installation/Implementierung; vermutlich eher zweiteres. 

@hhmarco73 schrieb:

Auch in 5.2.16 ist die Klasse wie folgt definiert:

class Shopware_Components_Document extends Enlight_Class implements Enlight_Hook

Und die Methode ist auch weiterhin wie folgt definiert:

public function assignValues()

Warum sollte also ein before/after Hook nicht mehr funktionieren? Entweder liegt hier ein generelles Problem mit dem Hook System vor oder es liegt an deiner lokalen Installation/Implementierung; vermutlich eher zweiteres. 

Hallo,

ich kann bei der Hook ebenfalls keinen Fehler feststellen, Sie funktioniert auch unter Shopware 5.2.16 weiterhin problemlos.

Beste Grüße

Sebastian

Hi,

Vielen Dank für Euer schnelles Feedback.

Wenn Ihr keine ähnliche Probleme festellen könnt, dann muss es tatsächlich an der
SW Installation und/oder die Serverumgebung liegen und diese geprüft werden.

Best, Konrad

Hi

 

Ich habe dort auch ein Hook und bei mir gehts.

Hi,

Problem behoben durch Neuinstallation des Plugins und Neueintragung der Subscription in der tabelle s_core_subscribes.
Nun haben wir aber ein neues Problem beim Anzeigen/Erzeugen eines PDF Dokumentes:

An exception occurred while executing ‘SELECT id as id, ordernumber, details FROM s_articles_details’: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘details’ in ‘field list’ in vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php on line 119

Stack trace:

 #0 vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(836): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(PDOException), 'SELECT id as id...', Array) #1 vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(766): Doctrine\DBAL\Connection-\>executeQuery('SELECT id as id...', Array, Array) #2 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchIndexer.php(150): Doctrine\DBAL\Connection-\>fetchAll('SELECT id as id...') #3 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchIndexer.php(96): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer-\>build() #4 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchTermQueryBuilder.php(84): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer-\>validate() #5 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1377): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchTermQueryBuilder-\>\_\_construct(Object(Shopware\_Components\_Config), Object(Doctrine\DBAL\Connection), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\CacheKeywordFinder), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\TermHelper)) #6 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareSearchdbal\_SearchQueryBuilderDbalService() #7 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_search...', 1) #8 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_search...', 1) #9 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1365): Shopware\Components\DependencyInjection\Container-\>get('shopware\_search...') #10 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareSearchdbal\_SearchConditionHandlerDbalService() #11 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_search...', 1) #12 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_search...', 1) #13 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1277): Shopware\Components\DependencyInjection\Container-\>get('shopware\_search...') #14 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareSearchdbal\_DbalQueryBuilderFactoryService() #15 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_search...', 1) #16 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_search...', 1) #17 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1233): Shopware\Components\DependencyInjection\Container-\>get('shopware\_search...') #18 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareSearch\_ProductNumberSearchService() #19 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_search...', 1) #20 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_search...', 1) #21 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1237): Shopware\Components\DependencyInjection\Container-\>get('shopware\_search...') #22 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareSearch\_ProductSearchService() #23 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_search...', 1) #24 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_search...', 1) #25 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1665): Shopware\Components\DependencyInjection\Container-\>get('shopware\_search...') #26 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareStorefront\_SimilarProductsServiceService() #27 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_storef...', 1) #28 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_storef...', 1) #29 var/cache/production\_201701241633/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1605): Shopware\Components\DependencyInjection\Container-\>get('shopware\_storef...') #30 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer-\>getShopwareStorefront\_ProductServiceService() #31 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container-\>get('shopware\_storef...', 1) #32 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container-\>doLoad('shopware\_storef...', 1) #33 engine/Shopware/Core/sArticles.php(199): Shopware\Components\DependencyInjection\Container-\>get('shopware\_storef...') #34 engine/Shopware/Components/Modules.php(73): sArticles-\>\_\_construct() #35 engine/Shopware/Components/Modules.php(95): Shopware\_Components\_Modules-\>loadModule('sArticles') #36 engine/Shopware/Components/Modules.php(149): Shopware\_Components\_Modules-\>getModule('Articles') #37 engine/Shopware/Components/Document.php(342): Shopware\_Components\_Modules-\>Articles() ...

Diese Fehlermeldung wird nicht durch die Programmlogik in dem Hook verursacht (diese ist zu Testzwecken ganz leer) sondern stammt anscheinend aus der Klasse: Shopware_Components_Document
und dort wird anscheinend versucht (aus unerklärlichen Gründen) auf eine Spalte “Detail” in der tabelle a_articles_details zuzugreifen, die es gar nicht gibt, und die wir gar nicht brauchen!

Die ganzen Cache-Files in var/cache/production_201701241633/proxies/
sind mehrmals gelöscht worden - es hilft nichts.

Weiss jemand einen Rat?

Best, Konrad

Hast du evtl. den Suchindex falsch konfiguriert im Backend?

1 „Gefällt mir“

Hi @Shyim‍

Meinst Du Grundeinstellungen > Storefront > Suche > „Blacklist für Keywords“?

Best, Konrad

Nein in den Relevanz Feldern

1 „Gefällt mir“

Hi @Shyim‍

bei uns ist ein Tabellenfeld mehr - und zwar Tabellenfeld „details“!

Hat wohl der ambitionierte Kunde heimlich angelegt :wink:
Habe das Feld jetzt gelöscht - und - ein WUNDER!

Bist ein Genie! Wäre nie dahinter gekommen - Herzlichen Dank!

Best, Konrad