Ich versuche gerade eine Regel für mein Plugin zu erstellen, die von einem session-Wert abhängig ist, den ich an anderer Stelle in der Applikation setze. Via dependency injection kann ich in der services.xml eigentlich den request_stack übergeben und darüber an die Symfony Session kommen, aber bei einer shopware.rule.definition scheint das nicht zu klappen. Bei Aufruf der match-Funktion wurde der Parameter noch nicht initialisiert. Über den ruleScope habe ich Zugriff auf Context und SalesChannelContext, was vielversprechend klang, aber mich zu keinem Request und keiner Session brachte. In der Doku steht nur dass man in der match-Funktion keinen Zugriff auf die DB oder ähnliche aufwändige Berechnungen machen sollte wegen Performance, aber Session-Zugriff wäre ja eigentlich trivial. Custom fields scheinen mir keine Alternative zu sein, weil ich die nicht mit dem (uneingeloggten) Benutzer in Verbindung bringen kann. Als workaround gedenke ich mit nicht wenig Schmerzen $_SESSION
zu verwenden…
Btw. das Tutorial zu Custom Rules war gut (Add Custom Rules | Shopware Documentation) aber ich hab lange gebraucht herauszufinden dass ich mal bin/build-administration.sh anwerfen muss um meine Regeln zu sehen.