Jak uzyskać nazwę kraju z kodu kraju w Magento 2?

10

chcę uzyskać nazwę kraju z kodu kraju, otrzymałem kod kraju z kolejności danych w następujący sposób:

$data = $order->getShippingAddress()->getData();
$countryCode = $data['country_id'];
echo $countryCode;

wypisze „US” lub inny kod kraju, czy istnieje sposób na uzyskanie nazwy kraju z tego kodu kraju?

prosty chłopak
źródło
Czy sprawdziłeś kod, aby uzyskać nazwę kraju?
Rakesh Jesadiya

Odpowiedzi:

31

Utwórz plik bloku,

   public function __construct(
            \Magento\Directory\Model\CountryFactory $countryFactory
        ) {
            $this->_countryFactory = $countryFactory;
        }

    public function getCountryname($countryCode){    
        $country = $this->_countryFactory->create()->loadByCode($countryCode);
        return $country->getName();
    }

Wywołanie z pliku phtml,

echo $block->getCountryname($countryCode);
Rakesh Jesadiya
źródło
1
Prawidłowo, z wyjątkiem braku średnika po $ country = $ this -> _ countryFactory-> create () -> loadByCode ($ countryCode) powinno być $ country = $ this -> _ countryFactory-> create () -> loadByCode ($ kod pocztowy);
Eirik
Czy można uzyskać kod kraju z nazwy kraju?
Vindhuja
@Vindhuja Sprawdź rakeshjesadiya.com/…
Rakesh Jesadiya
8

Możemy użyć, Magento\Directory\Api\CountryInformationAcquirerInterfaceaby uzyskać informacje o kraju:

/** @var \Magento\Directory\Api\CountryInformationAcquirerInterface $country */

/** @var \Magento\Directory\Api\Data\CountryInformationInterface $data */
    $data = $country->getCountryInfo($data['country_id']);
    $data->getFullNameEnglish();
    $data->getFullNameLocale();

Zobacz więcej tutaj o zwróconych wartościach: Magento\Directory\Api\Data\CountryInformationInterface

Khoa TruongDinh
źródło
Cześć, czy możesz mi powiedzieć, jak używać tego do uzyskiwania nazwy kraju engilsh w magento 2
Ask Bytes
To jest po prostu idealne. piszę artykuł oparty na tym rozwiązaniu, aby uzyskać szczegółowe informacje blog.equaltrue.com/… to może ci pomóc @AskBytes
Shuvankar Paul
0

Sprawdź podany model kraju i jego metody:

/**
     * 
     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
     * @param \Magento\Directory\Model\CountryFactory $countryFactory
     */
    public function __construct(
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, 
        \Magento\Directory\Model\CountryFactory $countryFactory    
    ) {  
        $this->scopeConfig = $scopeConfig;
        $this->countryFactory = $countryFactory;
    }

Jedną z metod, które zapewnia, jest $this->countryFactory->create()->getName();. Możesz użyć fabryki modeli w oparciu o swoje wymagania.

Sanjay Chaudhary
źródło
0

W poniższym przykładzie w jednym z zadań muszę wydrukować pdf w niestandardowy sposób, dlatego potrzebuję kraju adresu rozliczeniowego i kraju wysyłki, ale z danych zamówienia sprzedaży dostaję go jako identyfikator kraju taki jak „SE” (dla Szwecji)

w metodzie można obliczyć na dwa sposoby metodę getCountryName (), w języku angielskim lub lokalnym.

CountryInformationAcquirerInterface jest tutaj używany.

tutaj jest pełny kod

namespace Equaltrue\Orderprint\Block\Order;

use Magento\Backend\Block\Template\Context;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Registry;
use Magento\Framework\View\Element\Template;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Directory\Api\CountryInformationAcquirerInterface;

class Print extends Template
{
    protected $_coreRegistry;
    protected $orderRepository;
    protected $countryInformationAcquirerInterface;

    /**
     * Constructor
     *
     * @param CountryInformationAcquirerInterface $countryInformationAcquirerInterface
     * @param OrderRepositoryInterface $orderRepository
     * @param Context $context
     * @param Registry $coreRegistry
     * @param array $data
     */
    public function __construct(
        CountryInformationAcquirerInterface $countryInformationAcquirerInterface,
        OrderRepositoryInterface $orderRepository,
        Context $context,
        Registry $coreRegistry,
        array $data = []
    ) {
        $this->orderRepository = $orderRepository;
        $this->countryInformationAcquirerInterface = $countryInformationAcquirerInterface;
        $this->_coreRegistry = $coreRegistry;
        parent::__construct($context, $data);
    }

    /**
     * Retrieve Current Data
     */
    public function getOrderData()
    {
        $orderId = $this->getRequest()->getParam('order_id', 0);
        $order =  $this->getOrder($orderId);

        /*
         * Get billing Address
         * */
        $billingAddress = $order->getBillingAddress();
        $firstNameBilling = $billingAddress->getFirstName();
        $lastNameBilling = $billingAddress->getLastName();
        $streetBilling = implode( ", ", $billingAddress->getStreet());
        $cityBilling = $billingAddress->getCity();
        $postCodeBilling = $billingAddress->getPostCode();
        $countryIdBilling = $billingAddress->getCountryId();
        $countryNameBilling = $this->getCountryName($countryIdBilling);
        $telephoneBilling = "T: ".$billingAddress->getTelephone();
        $formattedBillingAddress = $firstNameBilling." ".$lastNameBilling."<br>". $streetBilling."<br>". $cityBilling.",".$postCodeBilling."<br>".$countryNameBilling."<br>".$telephoneBilling;

        /*
         * Get billing Address
         * */
        $shippingAddress = $order->getShippingAddress();
        $firstNameShipping = $shippingAddress->getFirstName();
        $lastNameShipping = $shippingAddress->getLastName();
        $streetShipping = implode( ", ", $shippingAddress->getStreet());
        $cityShipping = $shippingAddress->getCity();
        $postCodeShipping = $shippingAddress->getPostCode();
        $countryIdShipping = $billingAddress->getCountryId();
        $countryNameShipping = $this->getCountryName($countryIdShipping);
        $telephoneShipping = "T: ".$shippingAddress->getTelephone();
        $formattedShippingAddress = $firstNameShipping." ".$lastNameShipping."<br>". $streetShipping."<br>". $cityShipping.",".$postCodeShipping."<br>".$countryNameShipping."<br>".$telephoneShipping;

        return array(
            "formatted_billing_address" => $formattedBillingAddress,
            "formatted_shipping_address" => $formattedShippingAddress
        );
    }

    /**
     * Getting Country Name
     * @param string $countryCode
     * @param string $type
     *
     * @return null|string
     * */
    public function getCountryName($countryCode, $type="local"){
        $countryName = null;
        try {
            $data = $this->countryInformationAcquirerInterface->getCountryInfo($countryCode);
            if($type == "local"){
                $countryName = $data->getFullNameLocale();
            }else {
                $countryName = $data->getFullNameLocale();
            }
        } catch (NoSuchEntityException $e) {}
        return $countryName;
    }

    protected function getOrder($id)
    {
        return $this->orderRepository->get($id);
    }
}
Shuvankar Paul
źródło
0

Uzyskaj nazwę kraju według kodu kraju za pomocą objectManager.

<?php
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $countryCode = 'US'; // Enter country code here
    $country = $objectManager->create('\Magento\Directory\Model\Country')->load($countryCode)->getName();
    echo $country;
?>

Dzięki

Sohel Khan
źródło
-3
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
            $allowerdContries = $objectManager->get('Magento\Directory\Model\AllowedCountries')->getAllowedCountries() ;
            $countryFactory = $objectManager->get('\Magento\Directory\Model\CountryFactory');
            //echo "<pre>"; print_r($allowerdContries);

            $countries = array();
            foreach($allowerdContries as $countryCode)
            {
                    if($countryCode)
                    {

                        $data = $countryFactory->create()->loadByCode($countryCode);
                        $countries[$countryCode] =  $data->getName();
                    }
            }
Jaykumar R.
źródło