The store config values STORES > Configuration are stored in core_config_data
table
There are 5 columns, however, we should focus on 4 columns:
+scope: The scope to use to determine config value, e.g., store
or default
. We have some scopes:
__Magento\Framework\App\Config::SCOPE_TYPE_DEFAULT
__vendor/magento/module-store/Model/ScopeInterface.php
interface ScopeInterface
{
/**#@+
* Scope types
*/
const SCOPE_STORES = 'stores';
const SCOPE_WEBSITES = 'websites';
const SCOPE_STORE = 'store';
const SCOPE_GROUP = 'group';
const SCOPE_WEBSITE = 'website';
/**#@-*/
}
+scope_id they are store ids. We can find these values in store
table.
+path: The path through the tree of configuration values, e.g., general/store_information/name
. When developing a module, we declare these values in etc/adminhtml/system.xml
+value: config values.
So, when we want to get the config values, we need to know scope, scope_id
and path
. Magento had a method to retrieve config value by path, scope and scope code (store id):
vendor/magento/framework/App/Config.php
vendor/magento/framework/App/Config/ScopeConfigInterface.php
public function getValue(
$path,
$scopeType = ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
$scopeCode = null
);
In your case, you want to get the phone value with websites
scope and path general/store_information/phone
. We should start to debug with a raw sql to check the available phone numbers:
SELECT * FROM core_config_data a WHERE a.`path` LIKE '%general/store_information/phone%'
After executing this query, we make ensure that the phone number is available or not in our scope: \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES
. If not available in our scope, we should set in admin config.
SCOPE_WEBSITES
correlates with scope id (store id), so we need to set scope id (store id) for getValue()
method. For example:
//Getting current store id
/**
* @var \Magento\Store\Model\StoreManagerInterface $storeManager
*/
......
$scopeCode = $this->storeManager->getStore()->getStoreId()
$this->_scopeConfig->getValue(
'general/store_information/phone',
\Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES,
$scopeCode
);