Eigenes Plugin und CookieCollection ab SW 5.6.3

Ich muss bezüglich der neuen CookieCollection ab 5.6.3 hier noch mal nachfragen. Nun ja, ich habe ein Plugin wo ein Cookie gesetzt werden soll. Im Plugin ist die dazugehörige Funktion eingebaut.

  public function addComfortCookie(): CookieCollection {
    $collection = new CookieCollection();
    $collection->add(new CookieStruct(
      'mein_cookie',
      '/^mein_cookie$/',
      'Text zu mein_cookie',
      CookieGroupStruct::COMFORT
    ));
    return $collection;
  }

Im Frontend bei den Cookie Einstellungen kann ich wunderbar die Option zu meinem Cookie sehen, aber das eigentliche Cookie vom Plugin ist dennoch nicht vorhanden, so dass ich es auslesen kann. Es wird im Plugin erzeugt, ist kurze Zeit im Browser aktiv, wird dann jedoch von Shopware wieder gelöscht. Mit $_COOKIE[“mein_cookie”] kann ich es nicht mehr auslesen, weil es einfach nicht da ist.

Mein Cookie steht hierbei unter “comfort”

{"groups":{

  "technical":{"name":"technical",
    "cookies":{
      "cookieDeclined":{"name":"cookieDeclined","active":true},
      "allowCookie":{"name":"allowCookie","active":true},
      "shop":{"name":"shop","active":true},
      "csrf_token":{"name":"csrf_token","active":true},
      "cookiePreferences":{"name":"cookiePreferences","active":true},
      "x-cache-context-hash":{"name":"x-cache-context-hash","active":true},
      "nocache":{"name":"nocache","active":true},
      "session":{"name":"session","active":true},
      "currency":{"name":"currency","active":true}},
      "active":true},
  
  "comfort":{"name":"comfort",
    "cookies":{
      "mein_cookie":{"name":"mein_cookie","active":true},
      "slt":{"name":"slt","active":true},
      "sUniqueID":{"name":"sUniqueID","active":true}},
      "active":true},

    "statistics":{"name":"statistics",
      "cookies":{
        "x-ua-device":{"name":"x-ua-device","active":false},
  
  "partner":{"name":"partner","active":false}},"active":false}},
  "hash":"........"}

Was muss ich noch tun, damit mein Cookie nun auch gesetzt bzw. nicht gelöscht wird?

 

Moin @R4M‍,

das funktioniert so jetzt halt nur für Cookies, die genau „mein_cookie“ heißen.
Ist das bei dir der Fall?

Lieben Gruß
Shopware  Patrick Stahl

jo Moin,

“mein_cookie” ist jetzt hier ein Beispiel, aber das wirkliche Cookie sieht ähnlich aus - also zwei Wörter mit Unterstrich getrennt. Da kann man nicht viel falsch machen.

Du könntest nochmal versuchen ein „“ vor den Unterstrich zu setzen.
Andernfalls müsste man das mal genauer untersuchen, prinzipiell läuft das so aber bei bislang allen.

Plugin ist installiert und aktiviert?

Lieben Gruß
Shopware  Patrick Stahl

Bei Unterstrich brauch man nicht escapen (bei „-“ ratsam), habe es versucht, hat aber auch nichts gebracht. Na klar ist das Plugin aktiv, konnte ja beim Debuggen kurz mein Cookie im Browser sehen. Aber beim weiteren Laden verschwindet es wieder.

Hintergrund: Hierbei wird das Cookie beim Login gesetzt. Könnte das die Ursache sein?

Nein, wann du das Cookie setzt dürfte egal sein.

Siehst du denn in den Headern der Response, dass dein Cookie wieder gelöscht wird?
Müsste dann ein Header in Richtung Set-Cookie mein_cookie=deleted; sein.

Wenn Ja, muss etwas an deinem regulären Ausdruck falsch sein.

Lieben Gruß
  Patrick Stahl

Bin ich bekloppt! Hab das Problem gefunden :slight_smile: Lag an einer fehlerhaften Einstellung zum Plugin, dadurch wurde das Setzen vom Cookie blockiert. Jetzt läuft alles wie es ein soll.

Danke für deine Hilfe!

Grüße von der Insel Rügen