วิธีรับหมายเลขโทรศัพท์ของร้านค้าใน magento 2


17

ฉันต้องการที่จะแสดงหมายเลขโทรศัพท์ที่บันทึกไว้ในผู้ดูแลระบบวีโอไอพีในส่วนหน้าในวีโอไอพี 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();

วิธีที่ไม่ได้รับการแนะนำ

คุณไม่ควรใช้ตัวจัดการวัตถุโดยตรง (ดูสาเหตุที่นี่: วีโอไอพี 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 ดูการแก้ไขของฉัน แต่คุณไม่ควรใช้ตัวจัดการวัตถุโดยตรง
Raphael at Digital Pianism

@RaphaelatDigitalPianism: ฉันได้รับข้อผิดพลาดข้อผิดพลาดร้ายแรง: Uncaught ข้อผิดพลาด: โทรไปที่ฟังก์ชั่นสมาชิกส่ง () บนโมฆะในผู้ขาย \ magento \ framework \ View \ Element \ AbstractBlock.php ในบรรทัด 644 - หลังจากล้างแคชและทั้งหมด ...
Kaushal Suthar

2
คุณต้องผ่านร้านค้าเพื่อเป็นอาร์กิวเมนต์ของฟังก์ชัน getStoreInformationObject
Franck Garnier

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

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');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.