วิธีรับชื่อประเทศจากรหัสประเทศใน Magento 2


10

ฉันต้องการชื่อประเทศจากรหัสประเทศฉันได้รับรหัสประเทศจากลำดับข้อมูลเช่นนี้:

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

มันจะพิมพ์ 'US' หรือรหัสประเทศอื่น ๆ มีวิธีรับชื่อประเทศจากรหัสประเทศนี้หรือไม่?


คุณตรวจสอบรหัสเพื่อรับชื่อประเทศหรือไม่
Rakesh Jesadiya

คำตอบ:


31

สร้างไฟล์บล็อก

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

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

โทรจากไฟล์ phtml

echo $block->getCountryname($countryCode);

1
ถูกต้องยกเว้นคุณไม่มีเครื่องหมายทวิภาคหลัง $ country = $ this -> _ countryFactory-> create () -> loadByCode ($ countryCode) ควรเป็น $ country = $ this -> _ countryFactory-> create () -> loadByCode ($ รหัสประเทศ);
Eirik

เป็นไปได้หรือไม่ที่จะรับรหัสประเทศจากชื่อประเทศ?
Vindhuja

@Vindhuja ตรวจสอบrakeshjesadiya.com/…
Rakesh Jesadiya

8

เราสามารถใช้Magento\Directory\Api\CountryInformationAcquirerInterfaceเพื่อรับข้อมูลประเทศ:

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

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

ดูเพิ่มเติมที่นี่เกี่ยวกับค่าที่ส่งคืน: Magento\Directory\Api\Data\CountryInformationInterface


สวัสดีคุณช่วยบอกฉันได้ไหมว่าจะใช้ชื่อนี้ในการรับชื่อประเทศ engilsh ใน magento 2 ได้อย่างไร
Ask Bytes

มันสมบูรณ์แบบ ฉันเขียนบทความตามวิธีแก้ปัญหานี้เพื่อดูรายละเอียดblog.equaltrue.com/นี้สามารถช่วยคุณ @ AskBytes
Shuvankar Paul

0

ตรวจสอบรูปแบบของประเทศและวิธีการที่ระบุ:

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

หนึ่งในวิธีที่มีให้คือ$this->countryFactory->create()->getName();คุณสามารถใช้โรงงานจำลองตามความต้องการของคุณ


0

ในตัวอย่างด้านล่างในหนึ่งในภารกิจที่ฉันต้องพิมพ์ pdf ในแบบที่กำหนดเองนั่นคือเหตุผลที่ฉันต้องการประเทศที่อยู่สำหรับการเรียกเก็บเงินและประเทศที่อยู่สำหรับจัดส่ง แต่จากข้อมูลคำสั่งขายฉันได้รับรหัสประเทศเช่น "SE" (สำหรับสวีเดน)

ในวิธีนี้คุณสามารถให้ความสำคัญกับ method getCountryName () สองทางเป็นภาษาอังกฤษหรือเป็นภาษาท้องถิ่น

CountryInformationAcquirerInterface ถูกใช้ที่นี่

นี่คือรหัสเต็ม

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

รับชื่อประเทศตามรหัสประเทศโดยใช้ 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;
?>

ขอบคุณ


-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();
                    }
            }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.