Einzelne Grafschaft zulassen gibt leere Dropdown-Optionen im Front-End-Checkout-Feld Land in Magento 2

9

Wir haben in admin Länder nach Kanada zulassen konfiguriert . Auf der Vorderseite wird standardmäßig das Länderfeld der Checkout-Seite mit Kanada geladen. Wenn Sie jedoch auf das Dropdown-Menü Land klicken, werden leere Dropdown-Felder angezeigt.

Referenzcode.

<option value=""> </option>
<option data-title="" value=""></option>
<option data-title="Canada" value="CA">Canada</option>

Referenzbild. Geben Sie hier die Bildbeschreibung ein

Kann uns jemand helfen, das Länderfeld auf nur ein Land zu beschränken, anstatt es leer anzuzeigen, oder wählen Sie Wertoptionen aus, damit das zulässige Land standardmäßig ein Land sein kann und das Länderfeld nicht ausgewählt ist.

Krishna ijjada
quelle

Antworten:

4

Sie können das After-Plugin erstellen. Diese Logik funktioniert für mich einwandfrei, um die leere Option aus der Länder-Dropdown-Liste zu entfernen

1) Erstellen Sie die Datei di.xml in app / code / Mymodule / Custom / etc / frontend / 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="Magento\Directory\Model\ResourceModel\Country\Collection">
            <plugin name="remove-empty-space" 
                type="Mymodule\Custom\Plugin\Country\Collection"/>
        </type>
    </config>

2) Erstellen Sie ein Plugin in der App / Code / Mymodule / Custom / Custom / Plugin / Country / Collection.php

class Collection
{
    /**
     * Arguments processing.
     *
     * @param \Magento\Directory\Model\ResourceModel\Country\Collection $subject
     * @param $options
     * @return array|bool
     *
     */
    public function afterToOptionArray(
        \Magento\Directory\Model\ResourceModel\Country\Collection $subject,
        $options
    ) {
        $result = array_filter($options, function ($option) {
            return empty($option['value']) ? false : true;
        });
        return $result;
    }
}
Mohammad Maheboob
quelle
@Mohammed, können Sie bitte auch den vollständigen Code mit di.xml aktualisieren?
Jafar Pinjar
@jafarpinjar, ich habe meinen Code aktualisiert, hoffe, es wird Ihnen helfen
Mohammad Maheboob
Wird nicht empfohlen, da es die Funktionalität an anderer Stelle beeinträchtigt. Die Produktbearbeitungsseite wird aufgrund des Attributs Herstellungsland nicht mehr geöffnet.
Zhartaunik
1

Dieses Problem wird über ein kleines Plugin behoben:

<?php

namespace Vendor\Module\Plugin\ResourceModel\Country;

/**
 * Plugin for processing incoming arguments of the method that leading to displaying additional empty dropdown.
 */
class Collection
{
    /**
     * Arguments processing.
     *
     * @param \Magento\Directory\Model\ResourceModel\Country\Collection $subject
     * @param bool $emptyLabel
     *
     * @return bool|array
     */
    public function beforeToOptionArray(
        \Magento\Directory\Model\ResourceModel\Country\Collection $subject,
        $emptyLabel = null
    ) {
        return is_null($emptyLabel) ? [''] : null;
    }
}

genießen:)

Dmitry
quelle
Wo muss ich diese Datei erstellen? Ich habe die Datei beim Anbieter erstellt. Aber es hat nicht funktioniert.
Sunny Rahevar
1
Sie sollten vor dem Plugin ( devdocs.magento.com/guides/v2.0/extension-dev-guide/… ) das neue Cusom-Modul (App \ Code \ Vendor \ Module \ Plugin \ ResourceModel \ Country)
Dmitry
@Dmitry, können Sie bitte auch den vollständigen Code mit di / xml aktualisieren?
Jafar Pinjar
@Dmitry, benutzte das Plugin, es funktioniert nicht für mich
Jafar Pinjar