Làm cách nào để lấy tên quốc gia từ mã quốc gia trong Magento 2?


10

Tôi muốn lấy tên quốc gia từ mã quốc gia, tôi đã nhận được mã quốc gia từ thứ tự dữ liệu như thế này:

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

nó sẽ in 'US' hoặc bất kỳ mã quốc gia nào khác, có cách nào để lấy tên quốc gia từ mã quốc gia này không?


Bạn đã kiểm tra mã để có được tên quốc gia?
Rakesh Jesadiya

Câu trả lời:


31

Tạo tập tin khối,

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

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

Gọi từ tệp phtml,

echo $block->getCountryname($countryCode);

1
Đúng ngoại trừ bạn đang thiếu dấu hai chấm sau $ country = $ this -> _ countryFactory-> create () -> loadByCode ($ countryCode), nó phải là $ country = $ this -> _ countryFactory-> tạo () -> loadByCode ($ mã quốc gia);
Eirik

Có thể lấy mã quốc gia từ tên quốc gia?
Vindhuja


8

Chúng tôi có thể sử dụng Magento\Directory\Api\CountryInformationAcquirerInterfaceđể có được thông tin quốc gia:

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

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

Xem thêm ở đây về các giá trị được trả về: Magento\Directory\Api\Data\CountryInformationInterface


Xin chào, bạn có thể vui lòng cho tôi biết, làm thế nào để sử dụng tên này để nhận tên quốc gia engilsh trong magento 2
Hỏi Byte

Điều này là hoàn hảo. Tôi viết một bài viết dựa trên giải pháp này để biết chi tiết blog.equaltrue.com/. Điều này có thể giúp bạn @AskBytes
Shuvankar Paul

0

Kiểm tra mô hình nhất định của quốc gia và phương thức của nó:

/**
     * 
     * @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;
    }

Một trong những phương pháp mà nó cung cấp là $this->countryFactory->create()->getName();. Bạn có thể sử dụng nhà máy mô hình dựa trên yêu cầu của bạn.


0

Trong ví dụ dưới đây, trong một trong những nhiệm vụ tôi cần in pdf theo cách tùy chỉnh, đó là lý do tại sao tôi cần quốc gia địa chỉ thanh toán và quốc gia địa chỉ giao hàng, nhưng từ dữ liệu đơn hàng tôi nhận được dưới dạng id quốc gia như là SE SE (đối với Thụy Điển)

trong phương thức, bạn có thể định giá theo hai cách trên phương thức getCountryName (), bằng tiếng Anh hoặc bằng tiếng địa phương.

CountryIn informationAcquirerInterface được sử dụng ở đây.

đây là mã đầy đủ

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);
    }
}

0

Lấy tên quốc gia theo mã quốc gia bằng 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;
?>

Cảm ơn


-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();
                    }
            }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.