Variable in Session schreiben?

Wie kann ich in Shopware 6 Daten in die Session schreiben?

In SW5 ging das ja so:

Shopware()->Session()->offsetSet

bzw. noch andere Operationen

Shopware()->Session()->offsetExists
Shopware()->Session()->offsetUnset

 

Hi FloC3,

hatte bis gerade das gleiche Problem und musste einiges im Kern durchsuchen und verstehen wie SW6 funktioniert.
Ich selber bin in Magento Zuhause und möchte jetzt auch mit SW6 durchstarten.

Bitte steinige mich nicht, wenn meine Lösung nicht den Regeln entspricht.
Ich habe es zum aktuellen Zeitpunkt so verstanden, halte es für richtig und es funktioniert.

Fange ich mal an:

Das Wichtigste ist zu verstehen, dass SW6 viel bzw. alles mit dem Symfony Framework macht.
Bedeutet wir sollten erstmal den richtigen Namespace implementieren.

Verwende dafür: use Symfony\Component\HttpFoundation\Session\Session;

Laut SW Vorgabe verwenden wir die Constructor Injection.
Also definiere eine private property “$session” und füge als erstes Argument die Session-Klasse hinzu.

    /**
     * @var Session
     */
    private $session;

    public function __construct(Session $session) {
        $this->session = $session;
    }

Sofern du jetzt speicherst und ausprobierst, müsste es knallen, da dein Constructor keine Parameter erwartet.
Hier kommt dann deine services.xml ins Spiel.

In meinem Beispiel arbeite ich mit services und dem EventSubscriber.
Das Argument registriere ich dann innerhalb von dem einzelnen Service.

Nach einem Reload solltest du jetzt Zugriff auf die Session haben.

$this->session->set(‘beliebigerSchluessel’, ‘ABC123’);
$test = $this->session->get(‘beliebigerSchluessel’);
die($test. ’ – Anzahl Einträge: '. $this->session->count());

Ich hoffe dir hilft das weiter.
Ansonsten kopiere doch mal deinen Code Ausschnitt hier rein.

Grüße

Hallo @Konzeptphase‍,

danke für deinen Code, werde ich ausprobieren!

Einen eigenen Code habe ich nicht, kann ich nicht kopieren. Hatte nämlich noch keinen Anhaltspunkt gefunden …