Cách lấy số điện thoại của cửa hàng trong magento 2


17

Tôi muốn hiển thị số điện thoại được lưu trong quản trị viên magento ở lối vào trong magento 2.

Giống như trong magento 1.9 giống như trong

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

Câu trả lời:


14

Bạn sẽ phải sử dụng Magento/Store/Model/Informationlớp và gọi getStoreInformationObject()phương thức cho việc đó.

Cách đề xuất

Bạn sẽ phải đưa lớp này vào khối tùy chỉnh của mình để có thể sử dụng lớp đó trong mẫu của bạn.

protected $_storeInfo;

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

Sau đó tạo một phương thức tùy chỉnh để lấy số điện thoại:

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

Vì vậy, trong mẫu của bạn, bạn có thể gọi:

$block->getPhoneNumber();

Cách không được khuyến khích

Bạn không bao giờ nên sử dụng trình quản lý đối tượng trực tiếp (xem tại sao ở đây: Magento 2: sử dụng hay không sử dụng ObjectManager trực tiếp? )

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

Sau đó, bạn có thể nhận được điện thoại bằng cách gọi:

$phone = $storeInfo->getPhone();

Cách triển khai bằng trình quản lý đối tượng trong phtml
Paras Arora

@ parasarora1303 xem bản chỉnh sửa của tôi nhưng bạn không bao giờ nên sử dụng trình quản lý đối tượng trực tiếp
Raphael tại Digital Pianism

@RaphaelatDigitalPianism: Tôi đang gặp lỗi Lỗi nghiêm trọng: Uncaught Error: Gọi tới hàm thành viên phái () trên null trong nhà cung cấp \ magento \ framework \ View \ Element \ AbstractBlock.php trên dòng 644 - Sau khi xóa bộ nhớ cache và tất cả. ...
Kaushal Suthar

2
Bạn cần phải vượt qua cửa hàng như một đối số của hàm getStoreIn informationObject
Franck Garnier

1
Câu trả lời này vẫn không đúng. $ cửa hàng không được xác định.
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();

7

bạn cần tiêm một thể hiện \Magento\Framework\App\Config\ScopeConfigInterfacetrong khối của bạn.

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

Sau đó tạo phương thức getStorePhone()

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

và gọi trong mẫu của bạn echo $block->getStorePhone()


1

Các phương pháp trên không hiệu quả vì vậy tôi đã thử theo cách và nó hiệu quả với tôi ...

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();
    }
}

và trong tệp mẫu tôi đã gọi

echo $block->getPhoneNumber();

1

Các mã trên không làm việc cho tôi. Tôi đã thử mã sau đây hoạt động.

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();

}
}

Tệp mẫu

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


0

Chúng tôi cũng có thể sử dụng:

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
$storePhone = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('general/store_information/phone');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.