Wie erhalte ich den Namen des Geschäfts in der Vorlage?

13

Wie ist es möglich, den aktuellen Speichernamen in einer benutzerdefinierten Magento 2-Vorlage mit einem benutzerdefinierten Block auszugeben?

Dominik Barann
quelle
welche vorlage ??
Marius
benutzerdefinierte Vorlage mit einem benutzerdefinierten Block
Dominik Barann

Antworten:

17

Sie müssen die Instanz von \Magento\Framework\App\Config\ScopeConfigInterfacein Ihrem Block verwenden:

Erstellen Sie die Methode getStoreName()

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

und rufen Sie Ihre Vorlage auf echo $this->getStoreName()

Marius
quelle
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
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();
    }
}

Dann in der Vorlage:

<?php
/**
 * @var $block \VendorName\ModuleName\Block\CustomBlock
 */
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>
Alex Paliarush
quelle
Vielen Dank für Ihre Lösung, aber ich möchte den Namen der Geschäftsansicht nicht anzeigen. Nach dem Geschäftsnamen der Konfiguration gesucht.
Dominik Barann
4

Um einen Wert für die Geschäftskonfiguration zu erhalten general/store_information/name, können Sie Folgendes verwenden

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

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

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;

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

Was Sie als Abhängigkeit in Ihre Blockklasse einbauen würden

Sander Mangel
quelle