如何在模板中获取商店名称?


Answers:


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.上
多米尼克Barann 2015年

清除VAR /生成文件夹
马吕斯

1
@Marius的方法是正确的,但是它对我没有用。取而代之的是我用 \Magento\Store\Model\StoreManagerInterface $storeManager 在构造器中, public function getStoreName() { return $this->storeManager->getStore()->getName(); } 而不是getName()可以使用getCode()getId()
拉兹万

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>";
?>

感谢您的解决方案,但我不想显示商店视图名称。搜索了配置的商店名称。
多米尼克·巴兰

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

您将在块类中将其作为依赖项注入

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.