Magento 2: Wie verwende ich Cookie?


9

Wie können wir Cookies in Magento 2 verwenden, um Daten zu speichern?

Ich versuche, Daten in Cookies vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js zu speichern, um ausgewählte geschätzte Versandart zu speichern,

Antworten:


15

app/code/Custom/Module/view/frontend/templates/sample.phtml

<script type="text/javascript">
    require([
        'jquery',
        'jquery/jquery.cookie'
    ], function ($) {
        $(document).ready(function () {

            var check_cookie = $.cookie('foo'); // Get Cookie Value
            var date = new Date();
            var minutes = 60;
            date.setTime(date.getTime() + (minutes * 60 * 1000));
            $.cookie('foo', '', {path: '/', expires: -1}); // Expire Cookie
            $.cookie('foo', 'bar', {expires: date}); // Set Cookie Expiry Time
            $.cookie('foo', 'setvalue'); // Set Cookie Value
        }
    });
</script>

Hilfreicher Artikel auf PHP-Seite: https://webkul.com/blog/set-get-data-cookie-magento2/


1
Wie unten in @ rakesh-jesadiya angegeben, sollten Sie mage/cookiefür die meisten Anwendungsfälle verwenden. Dadurch wird automatisch die Cookie-Konfiguration für den Magento-Store verwendet, ohne dass diese explizit mit definiert werden muss jquery/jquery.cookie.
Pmclain

10

Sie können Cookies in der js-Datei mit der folgenden Methode speichern:

define([
    'jquery',
    'mage/cookies'
], function ($) {
    $.cookie('cookiename', cookievalue);
});

mage/cookiesist für Magento 1?
Ankit Shah

1
@ AnkitShah Magier / Cookies arbeitet auch in Magento 2.
Rakesh Jesadiya

Haben Sie eine Idee, wie Sie mit dieser Methode ein Ablaufdatum festlegen können @RakeshJesadiya?
Ben Crook

@BenCrook, $ .cookie ('foo', '', {path: '/', läuft ab: -1}); arbeitet nicht für dich?
Rakesh Jesadiya

1
Es stellte sich heraus, dass es standardmäßig mit der Sitzung des Benutzers abläuft, was ich brauchte. Verwandte Frage, gibt es einen Unterschied zwischen $.cookie()und $.mage.cookies.set()?
Ben Crook

9

In der target.phtml, Add js Codes wie unten.

Setzen Sie die Cookies

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
       $.cookie('cookie_name', 'value', { path: '/' });//Set the cookies
    });
</script>

Wenn Sie den Wert von einer anderen Seite erhalten möchten, beachten Sie den Pfad Einstellung { path: '/' }!

Da Cookies nur für den angegebenen Pfad und alle Unterpfade zugänglich sind, finden Sie hier weitere Informationen zu diesem Cookie-Pfad und seiner Zugänglichkeit zu Unterordnerseiten .

Holen Sie sich die Cookies

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
        var temp = $.cookie('cookie_name');//Get the cookies
    });
</script>

Wie man diese Cookies auf Beobachter oder Controller verwendet
Sarvesh Tiwari

Ich versuche es mit dem obigen Code, aber ich erhalte keinen Cookie-Wert auf einer anderen Seite.
Chirag Patel

Auch ich wurde in der Konsole eingecheckt, aber ich kann dort nicht finden.
Chirag Patel

@ChiragPatel Stellen Sie den richtigen Pfad ein? Cookies sind nur für den angegebenen Pfad und alle Unterpfade zugänglich.
Key Shang

@ KeyShang Danke! Ich habe mein Problem gelöst. Es gibt ein Problem mit meinem Code.
Chirag Patel

0

Verwenden Sie die folgenden Informationen, um Daten in Cookies zu speichern. Hier ist der Code,

<script>
require([
    'jquery',
    'jquery/jquery.cookie',
    'domReady!'
], function($) {
  var data = "store my data";
  $.cookie('my_data', data );
  console.log($.cookie('my_data'));
});
</script>

0

Nur für den Fall, dass Sie nach dem Cookie-Check ein Modal öffnen müssen oder nicht:

 require(
    [
        'jquery',
        'Magento_Ui/js/modal/modal',
        'jquery/jquery.cookie'
    ],

Dies ist die richtige Reihenfolge, sonst funktioniert das Modal nicht

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.