wenn ich im Twig Template eine Order debugge, ist „documents“ auf null, obwohl ich im Backend die Dokumente wie z.B. Lieferschein oder Rechnung erstellt habe und auch runterladen kann.
Ist das ein Shopware Bug oder muss ich im Backend noch eine Einstellung vornehmen? Ich wollte einen Controller bauen, der mithilfe der OrderNumber die Rechnung raussucht, aber habe keine Idee wie ich das machen soll. Shopware sucht die Dokumente anhand der $documentId und $deepLinkCode (Was auch immer das ist), auf die ich ja kein Zugriff habe.
Die Association auf die Dokumente wird standardmäßig nicht geladen:
Ob das so gewollt ist, keine Ahnung. Am besten Ticket erstellen.
ggf. derweil die Methode decoraten und um ->addAssociation('documents') erweitern. Bin mir aber grad nicht sicher, ob ein PageLoader als Service geladen wird und man ihn überhaupt erweitern kann…
Vielen Dank für die Info. Ich habe das mal grad Im Core Code erweitert und es funktioniert. Wie kann ich die function am bsten überschreiben? Hast du eventuell ein Beispiel?
namespace ......... use Shopware\Storefront\Event\RouteRequest\OrderRouteRequestEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class OrderSubscriber implements EventSubscriberInterface { public function \_\_construct() { } public static function getSubscribedEvents() { return [OrderRouteRequestEvent::class =\> 'onOrderPageLoaded']; } public function onOrderPageLoaded(OrderRouteRequestEvent $event) { $criteria = $event-\>getCriteria(); $criteria-\>addAssociation('documents'); } }
Im services.xml vom Plugin dann noch registrieren als Subscriber.
Im Template ist dann die
order.documents
verfügbar, was immer man dann damit auch machen will.
Hallo @WernerBu ,
vielen Dank für den Code.
Nutzt du diesen Subscriber noch? Gibt es ein Update für Version 6.4.20.2?
In dieser Version steht die Variable order.documents bereits zur Verfügung. Allerdings werden die Dokumente erst angezeigt, wenn sie zuvor per E-Mail versendet wurden und in der Datenbanktabelle ‚document‘ die Spalte ‚sent‘ den Wert 1 hat.
Weißt du ob es eine Möglichkeit gibt alle Dokumente im Storefront anzuzeigen, egal ob sie per E-Mail verschickt wurden, oder nicht?
Hallo @Laudenz,
falls das Thema noch aktuell sein sollte - in der OrderRoute werden für die documents-Association zwei Filter gesetzt, einmal für „sent“ und einmal für „config.displayInCustomerAccount“ (welche dann am Dokument gesetzt sein muss - wann diese gesetzt wird, habe ich auch noch nicht gefunden).
Umgehen bzw. setzen von eigenen Filtern geht bspw. durch einen Subscriber auf „OrderCriteriaEvent“, welcher nach dem Zusammenstellen der Criteria dispatched wird.
Achtung!
Die Einstellung unter 1) muss vor der Generierung der Dokumente gesetzt sein. Das heißt, für bereits erstellte Dokumente gilt das nicht, diese werden rückwirkend auch nicht im Kundenkonto angezeigt. Wieso diese Logik? Keine Ahnung.
Aber bis auf diese Einschränkung funktioniert das auch Out-Of-The-Box!