How to get Country Collection in Magento 2
To get country collection according to store, you need to add the following code in your file:
<?php
namespace Webkul\Hello\Block;
class country extends \Magento\Framework\View\Element\Template {
protected $_countryCollectionFactory;
public function __construct(
\Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryCollectionFactory,
\Magento\Framework\View\Element\Template\Context $context,
array $data = []
) {
parent::__construct($context, $data);
$this->_countryCollectionFactory = $countryCollectionFactory;
}
public function getCountryCollection()
{
$collection = $this->_countryCollectionFactory->create()->loadByStore();
return $collection;
}
/**
* Retrieve list of top destinations countries
*
* @return array
*/
protected function getTopDestinations()
{
$destinations = (string)$this->_scopeConfig->getValue(
'general/country/destinations',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
return !empty($destinations) ? explode(',', $destinations) : [];
}
/**
* Retrieve list of countries in array option
*
* @return array
*/
public function getCountries()
{
return $options = $this->getCountryCollection()
->setForegroundCountries($this->getTopDestinations())
->toOptionArray();
}
}
Here,
getCountries(): is the main function, which you need to call to get collection.
_countryCollectionFactory: is a collection factory of countries.
getCountryCollection(): In this function, we get the country collection by the country factory according to the store.
getTopDestinations(): in this function, we get different countries’ collections from the system/config, you can change them according to your needs.
I hope this blog will help you with How to get Country Collection in Magento 2. You may also check our wide range of best Magento 2 Extensions.
Please reach out to our team via a support ticket if you have any queries.
Try this and if you have any queries then just comment below 🙂