Loos mag eine großartige Lösung, aber ich erhalte den folgenden Fehler: Schwerwiegender Fehler: Rufen Sie eine Mitgliedsfunktion dispatch () für ein Nicht-Objekt in /vendor/magento/framework/View/Element/AbstractBlock.php in Zeile 637 auf.
Dominik Barann
Lösche den var / generation Ordner
Marius
1
@Marius 'Ansatz ist richtig, hat aber bei mir nicht funktioniert. Stattdessen habe ich verwendet , \Magento\Store\Model\StoreManagerInterface $storeManager in Konstruktor und public function getStoreName() { return $this->storeManager->getStore()->getName(); } Anstatt getName()können Sie verwenden getCode(), getId().
Razvan
9
Verwenden Sie den Geschäftsmanager, der Informationen zum aktiven Geschäft enthält. Wenn der benutzerdefinierte Block nicht von TemplateBlock geerbt wird, fügen Sie die Abhängigkeit von \Magento\Store\Model\StoreManagerInterfacein construct ein.
<?php
namespaceVendorName\ModuleName\Block;classCustomBlockextends \Magento\Framework\View\Element\Template
{/**
* Get current store name.
*
* @return string
*/publicfunction getCurrentStoreName(){return $this->_storeManager->getStore()->getName();}}
Dann in der Vorlage:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";?>
Dies von einem Block oder Helfer aus zu tun, wäre jedoch sauberer. Unten finden Sie eine Hilfsklasse, die in Ihrem eigenen benutzerdefinierten Modul vorhanden wäre
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
);}}
Was Sie als Abhängigkeit in Ihre Blockklasse einbauen würden
Antworten:
Sie müssen die Instanz von
\Magento\Framework\App\Config\ScopeConfigInterface
in Ihrem Block verwenden:Erstellen Sie die Methode
getStoreName()
und rufen Sie Ihre Vorlage auf
echo $this->getStoreName()
quelle
\Magento\Store\Model\StoreManagerInterface $storeManager
in Konstruktor undpublic function getStoreName() { return $this->storeManager->getStore()->getName(); }
AnstattgetName()
können Sie verwendengetCode()
,getId()
.Verwenden Sie den Geschäftsmanager, der Informationen zum aktiven Geschäft enthält. Wenn der benutzerdefinierte Block nicht von
Template
Block geerbt wird, fügen Sie die Abhängigkeit von\Magento\Store\Model\StoreManagerInterface
in construct ein.Dann in der Vorlage:
quelle
Um einen Wert für die Geschäftskonfiguration zu erhalten
general/store_information/name
, können Sie Folgendes verwendenDies von einem Block oder Helfer aus zu tun, wäre jedoch sauberer. Unten finden Sie eine Hilfsklasse, die in Ihrem eigenen benutzerdefinierten Modul vorhanden wäre
Was Sie als Abhängigkeit in Ihre Blockklasse einbauen würden
quelle