Coger el pais seleccionado en el summary checkout (Magento 2)

bravo_88

Miembro
Entiendo que var quote.shippingAddress(); no debe recoger el valor que queremos, puesto que viene null... quizá otra funcion para traer esos datos?
 

Toni FactoriaDigital

Experto en Magento de Factoría Digital
Miembro del equipo
Hola,

Está devolviendo null también del objeto de quote. Puedes probar con checkout-data, algo así: How to select shipping address and trigger shipping rates to update on checkout in Magento 2 - Dmytro Poperechnyy - Magento Development Notes

Pero sin todo el código que aparece ahí, puedes aprovechar la inyección a requirejs de la parte:

JavaScript:
'Magento_Checkout/js/checkout-data',
Pasarle el parámetro checkoutData a la función y dentro utilizar:

JavaScript:
checkoutData.shippingAddress();
o bien:

JavaScript:
checkoutData.getShippingAddress();
Sin tenerlo a mano, no sé exactamente cuál sería.
Ve jugando con las opciones que te da y a ver si logras sacar el país.

Un saludo.
 

bravo_88

Miembro
ReferenceError: checkoutData is not defined ... tampoco me coge el cehckoutData

JavaScript:
<script>
    require([
        'jquery',
        'Magento_Checkout/js/checkout-data',
        
    ], function($, quote) {
        var shippingAddress = checkoutData.getShippingAddress();
        console.log(shippingAddress);
        //var country = shippingAddress.getCountry();
        //alert(country);
    });
</script>
Pero buscando, es asi como se utiliza checkoutData.getShippingAddress();
 

Toni FactoriaDigital

Experto en Magento de Factoría Digital
Miembro del equipo
Te has dejado una parte que te comenté:

Pasarle el parámetro checkoutData a la función
Fíjate que function($, quote) no le has pasado checkoutData. Al sustituir el segundo parámetro de require de quote a checkout-data, ahora tienes accesible checkoutData desde la variable quote. Cambia quote por checkoutData y ya te funcionaría.

Un saludo.
 

bravo_88

Miembro
he probado con quote y checkoutData:

JavaScript:
<script>
    require([
        'jquery',
        'Magento_Checkout/js/model/quote',
         'ko',
        'Magento_Checkout/js/checkout-data'

    ], function($, quote, ko,  checkoutData) {
        var shippingAddress = quote.shippingAddress();
        var shippingAddress2 = checkoutData.getShippingAddressFromData();
        console.log(shippingAddress +" "+shippingAddress2);
        //var country = shippingAddress.getCountry();
        //alert(country);
    });
</script>
Porque he usado quote? Porque la mayoria de ejemplos que he encontrado por internet es lo que ponian. Despues encontre la funcion checkoutData.getShippingAddressFromData(); porque las anteriores no reconocia la funcion...

Resultado, dos null en la cosola... No se porque puden venir vacias o si no estamos cargando bien las funciones... Estoy mareado ya porque no se como traerme los datos...
 

Toni FactoriaDigital

Experto en Magento de Factoría Digital
Miembro del equipo
Hola bravo,

Entonces, sin poder trastear con la página o con el código, no te podría decir por donde tirar.
Lo único que te puedo recomendar es que eches un vistazo a ejemplos existentes del propio core de Magento, sobretodo en el módulo de checkout: vendor/magento/module-checkout/

Puede que este enlace también te ayude: Customize Checkout | Magento 2 Developer Documentation

Un saludo.
 
Arriba