Magento 2 plugin not getting called on checkout for shipping

I am trying to preselect the shipping country based on the user’s country code.

I have the code already needed to get the country code which is in my model.

I have tried using the code in accepted answer to this question. It uses an after plugin but I can’t get it to work. It still defaults to United States even though I ‘m telling it to use use GB.

I have tried logging out in the plugin but get nothing in the logs so I don’t think the plugin is getting called.

Here is the code:

di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="MagentoCheckoutBlockCartLayoutProcessor">
        <plugin name="asg_country_list"
                type="AsgGeoIpPluginCheckoutBlockCartLayoutProcessor" sortOrder="1"/>
    </type>
</config>

LayoutProcessor.php

<?php

namespace AsgGeoIpPluginCheckoutBlockCart;

class LayoutProcessor
{
    public function beforeProcess(
        MagentoCheckoutBlockCartLayoutProcessor $subject,
        $jsLayout
    ) {
        $path = '/var/www/magento.local/var/log/test.log';

        file_put_contents($path, 'this is a test');
    }

    public function afterProcess(
        MagentoCheckoutBlockCartLayoutProcessor $subject,
        $jsLayout
    ) {
        $selectedCountry = 'GB';

        $this->_logger->info($selectedCountry);

        if (isset($jsLayout['components']['checkoutProvider']['dictionaries'])) {

            foreach ($jsLayout['components']['checkoutProvider']['dictionaries']['country_id'] as &$country) {
                if ($country['value'] == $selectedCountry) {
                    $country['is_default'] = 1;
                } else {
                    if (isset($country['is_default'])) {
                        unset($country['is_default']);
                    }
                }
            }
        }
        if (isset($jsLayout['components']['block-summary']['children']['block-shipping']['children']['address-fieldsets'])) {
            $jsLayout['components']['block-summary']['children']['block-shipping']['children']['address-fieldsets']['children']['country_id']['value'] = $selectedCountry;
        }

        return $jsLayout;
    }
}

I’m using Magento 2.3.4. Could the plugin be calling the wrong module since the original question was Magento 2.2?


Go to Source of this post
Author Of this post: AdRock
Title Of post: Magento 2 plugin not getting called on checkout for shipping
Author Link: {authorlink}