Magento2
assign cat

To get country collection in toOptionArray, you need to add following code in your file:
First you need to inject a \Magento\Directory\Model\ResourceModel\Country\CollectionFactory in your class constructor:

    protected $_countryFactory;
    public function __construct(
        \Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryFactory
    ) {
        $this->_countryFactory= $countryFactory;
    }

Then in your class you can do:

 public function getAllOptions()
    {
        return $options = $this->getCountryCollection()->toOptionArray();
    }
    public function getCountryCollection()
    {
        $collection = $this->_countryFactory->create()->loadByStore();
        return $collection;
    }

Full Code:

protected $_countryFactory;
public function __construct(
     \Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryFactory
) {
     $this->_countryFactory= $countryFactory;
}
public function getAllOptions()
{
    return $options = $this->getCountryCollection()->toOptionArray();
}
public function getCountryCollection()
{
    $collection = $this->_countryFactory->create()->loadByStore();
    return $collection;
}
public function getOptionValue($value) 
{ 
    foreach ($this->getAllOptions() as $option) {
        if ($option['value'] == $value) {
            return $option['label'];
        }
    }
    return false;
}

Run php bin/magento setup:di:compile when you add any dependency injection.Because without php bin/magento setup:di:compile it throws error in code.

Leave a Reply

Your email address will not be published. Required fields are marked *