Backendsuche erweitern

Hi zusammen, ich hänge im Moment etwas fest. Es geht darum die globale Suche oben im Backend auf die s_order_attributes zu erweitern. Um es zu testen habe ich die Änderungen direkt in der Search.php vorgenommen, was auch ohne Probleme funktioniert. Nun wollte ich das Ganze zwecks Updatesicherheit über ein Plugin laufen lassen. Im Plugin wollte ich es so lösen: $this-\>subscribeEvent( 'Shopware\_Controllers\_Backend\_Search::getOrders::replace', 'replaceSearch' ); Es ist aber egal was ich in die replaceSearch schreibe, es hat keinerlei Auswirkungen. Bin ich überhaupt an der richtigen Stelle? Hat da jemand einen Tip für mich? Besten Dank vorab!!

Hast du „repalce“ auch so geschrieben?! Viele Grüße

Hi, nein sorry ist nur hier ein Schreibfehler. Besser ich gleich aus. Danke!

Ist dies so überhaupt der richtige Weg die Suche zu erweitern?

Ich habe mir das gerade mal genauer angeschaut. Die backend Suche ist tatsächlich relativ unflexibel und schwer anzupassen. Wird denn im cache Verzeichnis ein proxy mit deinem hook angelegt?! Viele Grüße

müsste dann ja wohl ShopwareControllersBackendSearchProxy.php sein, oder? Diese gibt es aber nicht.

Irgendwie stehe ich auf dem Schlauch. Aktuell wird wenn das Plugin aktiv die eigentliche Funktion unterbrochen, als keine Suche mehr möglich, aber es wird keine neue Funktion erkannt?! Bedeutet doch grundlegend das der Hook greift, oder? Wie müsste denn die “replaceSearch” aussehen, damit das funktioniert? $this-\>subscribeEvent( 'Shopware\_Controllers\_Backend\_Search::getOrders::replace', 'replaceSearch' ); Hat da jemand noch einen Tip für mich?

Wie sieht denn deine replaceSearch function aus? Setzt Du einen Rückgabewert mit $args->setReturn()?

ja das schon. Hab den Fehler gefunden! :shock: Hatte unten einfach das $this->searchLimit übersehen was so ja in meiner Bootstrap nicht gehen kann. Habe es jetzt direkt gesetzt. Allerdings Frage ich mich gerade ob ich darauf überhaupt zugreifen könnte aus meinem Plugin heraus?? class Shopware\_Controllers\_Backend\_Search extends Shopware\_Controllers\_Backend\_ExtJs { /\*\* @var int - The limit for all SQL queries \*/ public $searchLimit = 5;

Mit $args->getSubject() kriegst Du eine Instanz des Proxies. Da dieser den Backend Controller extendet hast Du damit Zugriff auf die öffentlichen Variablen.

1 „Gefällt mir“

Besten Dank für den Tip!! :thumbup: Mit $searchLimit = $arguments-\>getSubject()-\>searchLimit; ist es jetzt ne runde Sache!