Magento 2: ¿Cómo usar la cookie?

9

¿Cómo podemos usar las cookies en magento 2 para almacenar datos?

Estoy tratando de almacenar datos en cookies, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js para almacenar el método de envío estimado seleccionado,

Yogesh
fuente

Respuestas:

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>

Artículo útil en el lado de PHP: https://webkul.com/blog/set-get-data-cookie-magento2/

Ankit Shah
fuente
1
Como @ rakesh-jesadiya dice a continuación, debería usarlo mage/cookiepara la mayoría de los casos de uso. Al hacerlo, se usará automáticamente la configuración de cookies para la tienda Magento sin necesidad de definirlas explícitamente jquery/jquery.cookie.
Pmclain
10

Puede almacenar cookies en el archivo js utilizando el método siguiente,

define([
    'jquery',
    'mage/cookies'
], function ($) {
    $.cookie('cookiename', cookievalue);
});
Rakesh Jesadiya
fuente
mage/cookieses para Magento 1?
Ankit Shah
1
@AnkitShah mage / cookies también está trabajando en magento 2.
Rakesh Jesadiya
¿Alguna idea de cómo establecer una fecha de vencimiento utilizando este método @RakeshJesadiya?
Ben Crook
@BenCrook, $ .cookie ('foo', '', {ruta: '/', caduca: -1}); no te funciona?
Rakesh Jesadiya
1
Resulta que caduca con la sesión del usuario por defecto, que es lo que necesitaba. Pregunta relacionada, ¿hay alguna diferencia entre $.cookie()y $.mage.cookies.set()?
Ben Crook
9

En el target.phtml, agregue códigos js como a continuación.

Establecer las cookies

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

Si desea obtener el valor de otra página, observe la configuración de la ruta{ path: '/' } .

Debido a que solo se puede acceder a las cookies en la ruta especificada y en cualquier ruta secundaria , puede ver más información sobre esto aquí Ruta de la cookie y su accesibilidad a las páginas de subcarpetas .

Consigue las galletas

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
        var temp = $.cookie('cookie_name');//Get the cookies
    });
</script>
Key Shang
fuente
cómo usar estas cookies en el observador o controlador
Sarvesh Tiwari
Intento con el código anterior pero no obtengo el valor de la cookie en otra página.
Chirag Patel
También me registraron en la consola pero no puedo encontrarla allí.
Chirag Patel
@ChiragPatel ¿Estableces el camino correcto? Solo se puede acceder a las cookies en la ruta especificada y en cualquier ruta secundaria.
Key Shang
@KeyShang ¡Gracias! Resolví mi problema, hay un problema con mi código.
Chirag Patel
0

use lo siguiente para almacenar datos dentro de las cookies. Aquí está el código

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

En caso de que necesite abrir o no un modal después de la comprobación de cookies:

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

este es el orden correcto, de lo contrario el modal no funcionará

Enrico Thrasher Monzeglio
fuente