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,

Yogesh
la source

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/

Ankit Shah
la source
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);
});
Rakesh Jesadiya
la source
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>
Key Shang
la source
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>
Tonmoy
la source
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

Enrico Thrasher Monzeglio
la source