Похоже, отличное решение, но я получаю следующую ошибку: Неустранимая ошибка: вызов функции-элемента 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
namespaceVendorName\ModuleName\Block;classCustomBlockextends \Magento\Framework\View\Element\Template
{/**
* Get current store name.
*
* @return string
*/publicfunction getCurrentStoreName(){return $this->_storeManager->getStore()->getName();}}
Тогда в шаблоне:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";?>
Однако делать это из блока или помощника было бы чище. Ниже приведен вспомогательный класс, который будет существовать в вашем собственном пользовательском модуле.
namespace[Namespace]\[Module]\Helper;classDataextends \Magento\Framework\App\Helper\AbstractHelper
{/**
* Retrieve store name
*
* @return string|null
*/publicfunction getStoreName(){return $this->scopeConfig->getValue('general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);}}
Который вы бы внедрить как зависимость в вашем классе блока
Ответы:
вам нужно использовать экземпляр
\Magento\Framework\App\Config\ScopeConfigInterface
вашего блока:Создать метод
getStoreName()
и позвоните в свой шаблон
echo $this->getStoreName()
источник
\Magento\Store\Model\StoreManagerInterface $storeManager
в конструктореpublic function getStoreName() { return $this->storeManager->getStore()->getName(); }
ВместоgetName()
вы можете использоватьgetCode()
,getId()
.Используйте менеджер магазина, который хранит информацию об активном магазине. Если пользовательский блок не унаследован от
Template
блока, введите зависимость от\Magento\Store\Model\StoreManagerInterface
в конструкции.Тогда в шаблоне:
источник
Чтобы получить значение конфигурации магазина, как
general/store_information/name
вы можете использовать следующееОднако делать это из блока или помощника было бы чище. Ниже приведен вспомогательный класс, который будет существовать в вашем собственном пользовательском модуле.
Который вы бы внедрить как зависимость в вашем классе блока
источник