Magento 2: Comment utiliser les cookies?


9

Comment pouvons-nous utiliser des cookies dans magento 2 pour stocker des données.

j'essaie de stocker des données dans un cookie, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js pour stocker la méthode d'expédition estimée sélectionnée,

Réponses:


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>

Article utile sur PHP Side: https://webkul.com/blog/set-get-data-cookie-magento2/


1
Comme l'indique @ rakesh-jesadiya ci-dessous, vous devriez utiliser la mage/cookieplupart des cas d'utilisation. Cela utilisera automatiquement la configuration des cookies pour la boutique Magento sans avoir besoin de les définir explicitement avec jquery/jquery.cookie.
Pmclain

10

Vous pouvez stocker des cookies dans le fichier js en utilisant la méthode ci-dessous,

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

mage/cookiesest pour Magento 1?
Ankit Shah

1
@AnkitShah mage / cookies fonctionne également dans magento 2.
Rakesh Jesadiya

Une idée comment définir une date d'expiration en utilisant cette méthode @RakeshJesadiya?
Ben Crook

@BenCrook, $ .cookie ('foo', '', {path: '/', expires: -1}); ne fonctionne pas pour vous?
Rakesh Jesadiya

1
Il s'avère qu'il expire avec la session de l'utilisateur par défaut, ce dont j'avais besoin. Question connexe, y a-t-il une différence entre $.cookie()et $.mage.cookies.set()?
Ben Crook

9

Dans le target.phtml, ajoutez des codes js comme ci-dessous.

Définissez les cookies

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

Si vous voulez obtenir la valeur d'une autre page, notez le paramètre de chemin{ path: '/' } !

Parce que les cookies ne sont accessibles qu'au chemin spécifié et à tous les sous-chemins , vous pouvez voir plus de discussion à ce sujet ici Chemin des cookies et son accessibilité aux pages de sous-dossier .

Obtenez les cookies

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

comment utiliser ces cookies sur l'observateur ou le contrôleur
Sarvesh Tiwari

J'essaie avec le code ci-dessus mais je n'obtiens pas de valeur de cookie dans une autre page.
Chirag Patel du

J'ai aussi été enregistré dans la console mais je ne peux pas y trouver.
Chirag Patel du

@ChiragPatel Fixez-vous le bon chemin? Les cookies ne sont accessibles qu'au chemin spécifié et aux sous-chemins.
Key Shang

@KeyShang Merci! j'ai résolu mon problème il y a un problème avec mon code.
Chirag Patel du

0

utilisez ce qui suit pour stocker des données dans un cookie. Voici le 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

Juste au cas où vous auriez besoin d'ouvrir ou non un modal après la vérification des cookies:

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

c'est le bon ordre sinon le modal ne fonctionnera pas

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.