Как получить номер телефона магазина в magento 2

17

Я хочу отобразить номер телефона, сохраненный в администраторе magento, в интерфейсе magento 2.

Как в magento 1.9

$storePhone = Mage::getStoreConfig('general/store_information/phone');

Парас Арора
источник

Ответы:

14

Вам придется использовать Magento/Store/Model/Informationкласс и вызвать getStoreInformationObject()метод для этого.

Рекомендуемый способ

Вы должны будете внедрить этот класс в свой пользовательский блок, чтобы иметь возможность использовать его в своем шаблоне.

protected $_storeInfo;

public function __construct(
    ....
    \Magento\Store\Model\Information $storeInfo,
    ....
) {
    ...
    $this->_storeInfo = $storeInfo;
    ....
}

Затем создайте собственный метод для получения номера телефона:

public function getPhoneNumber()
{
    return $this->_storeInfo->getStoreInformationObject(Store $store)->getPhone();
}

Таким образом, в вашем шаблоне вы можете позвонить:

$block->getPhoneNumber();

Не рекомендуемый способ

Вы никогда не должны использовать диспетчер объектов напрямую (смотрите, почему здесь: Magento 2: использовать или не использовать ObjectManager напрямую? )

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeInformation = $objectManager->create('Magento/Store/Model/Information');
$storeInfo = $storeInformation->getStoreInformationObject($store);

Тогда вы можете получить телефон, позвонив:

$phone = $storeInfo->getPhone();
Рафаэль в цифровом пианизме
источник
как реализовать это с помощью диспетчера объектов в phtml
Paras Arora
@ parasarora1303 посмотрите мои правки, но вы никогда не должны использовать менеджер объектов напрямую
Рафаэль из Digital Pianism
@RaphaelatDigitalPianism: я получаю сообщение об ошибке. Неустранимая ошибка: необработанная ошибка: вызов функции-члена dispatch () для null в vendor \ magento \ framework \ View \ Element \ AbstractBlock.php в строке 644 - после очистки кэша и всего. ...
Каушал Сутар
2
Вам нужно передать хранилище в качестве аргумента функции getStoreInformationObject
Франк Гарнье
1
Этот ответ все еще не прав. $ store не определен.
Cypher909
7
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$storeInformation = $objectManager->create('Magento\Store\Model\Information');

$store = $objectManager->create('Magento\Store\Model\Store');

$storeInfo = $storeInformation->getStoreInformationObject($store);

$phone = $storeInfo->getPhone();
Alex
источник
7

вам нужно добавить экземпляр \Magento\Framework\App\Config\ScopeConfigInterfaceв ваш блок.

$protected $scopeConfig;
public function __construct(
    ....
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    ....
) {
    ...
    $this->scopeConfig = $scopeConfig;
    ....
}

Затем создайте метод getStorePhone()

public function getStorePhone()
{
    return $this->scopeConfig->getValue(
        'general/store_information/phone',
        \Magento\Store\Model\ScopeInterface::SCOPE_STORE
    );
}

и позвоните в свой шаблон echo $block->getStorePhone()

Манашви Бирла
источник
1

Выше методы не работает, поэтому я попытался следующим образом, и это работает для меня ...

namespace Vendor\Module\Block;
class Contact extends \Magento\Framework\View\Element\Template
{
    protected $_storeInfo;
    protected $_storeManagerInterface;


    public function __construct( 
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Store\Model\Information $storeInfo,
        \Magento\Store\Model\StoreManagerInterface $storeManagerInterface,
        array $data = []
    )
    {
        parent::__construct($context, $data); 
        $this->_storeInfo = $storeInfo;
        $this->_storeManagerInterface = $storeManagerInterface;
    }
    public function getPhoneNumber()
    {
        return $this->_storeInfo->getStoreInformationObject($this->_storeManagerInterface->getStore(null))->getPhone();
    }
}

и в файле шаблона я позвонил

echo $block->getPhoneNumber();
Каушал Сутар
источник
1

Приведенный выше код не работает для меня. Я попробовал следующий код, который работает.

class Sociallinks extends \Magento\Framework\View\Element\Template
{
   protected $socialLinksHelper;
   protected $objMgr;
   protected $storeInfo;
   protected $scopeConfig;


   public function __construct(
      \Magento\Framework\View\Element\Template\Context $context,
      \Addpeople\Websettings\Helper\Data $myModuleHelper,
      array $data = []
    ) {

    parent::__construct($context, $data);
    $this->_socialLinksHelper = $myModuleHelper;
    $this->_objMgr =  \Magento\Framework\App\ObjectManager::getInstance();
    $storeInformation = $this->_objMgr->create('Magento\Store\Model\Information');
    $store = $this->_objMgr->create('Magento\Store\Model\Store');
    $this->_storeInfo = $storeInformation->getStoreInformationObject($store);

}

public function getPhoneNumber()
{

    return $this->_storeInfo->getPhone();

}
}

Файл шаблона

<?php echo $block->getPhoneNumber();?>

Лиз Айпе С
источник
0

Мы также можем использовать:

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
$storePhone = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('general/store_information/phone');
SagarPPanchal
источник