Magento 2: come utilizzare i cookie?


9

Come possiamo usare i cookie in Magento 2 per archiviare i dati?

sto cercando di memorizzare i dati nei cookie, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js per memorizzare il metodo di spedizione stimato selezionato,

Risposte:


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>

Articolo utile sul lato PHP: https://webkul.com/blog/set-get-data-cookie-magento2/


1
Come indicato di seguito da @ rakesh-jesadiya, dovresti utilizzare la mage/cookiemaggior parte dei casi d'uso. In questo modo verrà automaticamente utilizzata la configurazione dei cookie per il negozio Magento senza la necessità di definirli esplicitamente jquery/jquery.cookie.
Pmclain,

10

Puoi memorizzare i cookie nel file js usando il metodo seguente,

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

mage/cookiesè per Magento 1?
Ankit Shah

1
@AnkitShah mage / cookies funziona anche in magento 2.
Rakesh Jesadiya

Qualche idea su come impostare una data di scadenza usando questo metodo @RakeshJesadiya?
Ben Crook,

@BenCrook, $ .cookie ('foo', '', {path: '/', scade: -1}); non funziona per te?
Rakesh Jesadiya,

1
Si scopre che scade con la sessione dell'utente per impostazione predefinita, che è quello di cui avevo bisogno. Domanda correlata, c'è qualche differenza tra $.cookie()e $.mage.cookies.set()?
Ben Crook,

9

In target.phtml, aggiungi i codici js come di seguito.

Imposta i biscotti

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

Se vuoi ottenere il valore da un'altra pagina, nota l' impostazione del percorso{ path: '/' } !

Poiché i cookie sono accessibili solo per il percorso specificato e tutti i percorsi secondari , ulteriori discussioni in merito sono disponibili qui Percorso dei cookie e accessibilità alle pagine delle sottocartelle .

Prendi i biscotti

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

come utilizzare questi cookie su osservatore o controller
Sarvesh Tiwari,

Provo con il codice sopra ma non ottengo il valore del cookie in un'altra pagina.
Chirag Patel,

Inoltre sono stato registrato nella console ma non riesco a trovarlo.
Chirag Patel,

@ChiragPatel Hai impostato il percorso giusto? I cookie sono accessibili solo per il percorso specificato e tutti i percorsi secondari.
Key Shang

@KeyShang Grazie! ho risolto il mio problema c'è un problema con il mio codice.
Chirag Patel,

0

utilizzare quanto segue per memorizzare i dati all'interno dei cookie. Ecco il codice,

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

0

Nel caso in cui sia necessario aprire o meno un modale dopo il controllo dei cookie:

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

questo è l'ordine corretto, altrimenti il ​​modale non funzionerà

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.