วิธีรับชื่อร้านค้าในเทมเพลต


13

เป็นไปได้อย่างไรที่จะส่งออกชื่อร้านค้าปัจจุบันในเทมเพลตที่กำหนดเอง Magento 2 พร้อมบล็อกที่กำหนดเอง


แม่แบบอะไร
Marius

เทมเพลตที่กำหนดเองโดยใช้บล็อกที่กำหนดเอง
Dominik Barann

คำตอบ:


17

คุณต้องใช้อินสแตนซ์ของ\Magento\Framework\App\Config\ScopeConfigInterfaceในบล็อกของคุณ:

สร้างวิธีการ getStoreName()

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

และโทรในเทมเพลตของคุณ echo $this->getStoreName()


แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อผิดพลาดร้ายแรง: การเรียกไปยังฟังก์ชั่นสมาชิกส่ง () บนวัตถุที่ไม่ใช่ใน /vendor/magento/framework/View/Element/AbstractBlock.php ที่บรรทัด 637
Dominik Barann

ล้างโฟลเดอร์ var / generation
Marius

1
วิธีการของ @Marius ถูกต้อง แต่มันไม่ได้ผลสำหรับฉัน แต่ผมเคยใช้ \Magento\Store\Model\StoreManagerInterface $storeManager ในตัวสร้างและ public function getStoreName() { return $this->storeManager->getStore()->getName(); } แทนที่จะgetName()คุณสามารถใช้,getCode() getId()
Razvan

9

ใช้ผู้จัดการร้านซึ่งเก็บข้อมูลเกี่ยวกับร้านค้าที่ใช้งาน หากบล็อกที่กำหนดเองไม่ได้รับการสืบทอดมาจากTemplateบล็อกให้ฉีดการพึ่งพา\Magento\Store\Model\StoreManagerInterfaceในโครงสร้าง

<?php
namespace VendorName\ModuleName\Block;

class CustomBlock extends \Magento\Framework\View\Element\Template
{
    /**
     * Get current store name.
     *
     * @return string
     */
    public function getCurrentStoreName()
    {
        return $this->_storeManager->getStore()->getName();
    }
}

จากนั้นในเทมเพลต:

<?php
/**
 * @var $block \VendorName\ModuleName\Block\CustomBlock
 */
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>

ขอบคุณสำหรับโซลูชันของคุณ แต่ฉันไม่ต้องการแสดงชื่อมุมมองร้านค้าค้นหาชื่อร้านค้าของการกำหนดค่า
Dominik Barann

4

เพื่อรับค่าการกำหนดค่าร้านค้าเช่นgeneral/store_information/nameคุณสามารถใช้ต่อไปนี้

$config = new \Magento\Framework\App\Config\ScopeConfigInterface();

echo $config->getValue('general/store_information/name');

อย่างไรก็ตามการทำสิ่งนี้จากบล็อกหรือผู้ช่วยจะสะอาดกว่า ด้านล่างเป็นชั้นผู้ช่วยที่จะมีอยู่ในโมดูลที่กำหนดเองของคุณ

namespace [Namespace]\[Module]\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    /**
     * Retrieve store name
     *
     * @return string|null
     */
    public function getStoreName()
    {
        return $this->scopeConfig->getValue(
            'general/store_information/name',
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
        );
    }
}

ซึ่งคุณจะฉีดเป็นการพึ่งพาในคลาสบล็อกของคุณ

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