Как получить название магазина в шаблоне?


13

Как можно вывести текущее название магазина в пользовательском шаблоне Magento 2 с пользовательским блоком?


какой шаблон ??
Мариус

пользовательский шаблон с использованием пользовательского блока
Доминик Баранн

Ответы:


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


Похоже, отличное решение, но я получаю следующую ошибку: Неустранимая ошибка: вызов функции-элемента dispatch () для необъекта в /vendor/magento/framework/View/Element/AbstractBlock.php в строке 637.
Доминик Баранн

очистить папку var / generation
Мариус

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

Который вы бы внедрить как зависимость в вашем классе блока

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.