Parece una gran solución, pero obtengo el siguiente error: Error fatal: Llamar a un despacho de funciones miembro () en un no objeto en /vendor/magento/framework/View/Element/AbstractBlock.php en la línea 637.
Dominik Barann
borrar la carpeta var / generation
Marius
1
El enfoque de @Marius es correcto, pero no funcionó para mí. En lugar de ello he utilizado \Magento\Store\Model\StoreManagerInterface $storeManager en el constructor y public function getStoreName() { return $this->storeManager->getStore()->getName(); } en lugar de getName()que puede utilizar getCode(), getId().
Razvan
9
Use el administrador de la tienda, que contiene información sobre la tienda activa. Si el bloque personalizado no se hereda del Templatebloque, inyecte dependencia \Magento\Store\Model\StoreManagerInterfaceen la construcción.
<?php
namespaceVendorName\ModuleName\Block;classCustomBlockextends \Magento\Framework\View\Element\Template
{/**
* Get current store name.
*
* @return string
*/publicfunction getCurrentStoreName(){return $this->_storeManager->getStore()->getName();}}
Luego en plantilla:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";?>
Sin embargo, hacer esto desde un bloque o ayudante sería más limpio. A continuación se muestra una clase auxiliar que existiría en su propio módulo personalizado
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
);}}
Que inyectarías como dependencia en tu clase de bloque
Respuestas:
necesitas usar la instancia de
\Magento\Framework\App\Config\ScopeConfigInterfaceen tu bloque:Crea el método
getStoreName()y llame a su plantilla
echo $this->getStoreName()fuente
\Magento\Store\Model\StoreManagerInterface $storeManageren el constructor ypublic function getStoreName() { return $this->storeManager->getStore()->getName(); }en lugar degetName()que puede utilizargetCode(),getId().Use el administrador de la tienda, que contiene información sobre la tienda activa. Si el bloque personalizado no se hereda del
Templatebloque, inyecte dependencia\Magento\Store\Model\StoreManagerInterfaceen la construcción.Luego en plantilla:
fuente
Para obtener un valor de configuración de tienda como
general/store_information/namepuede usar lo siguienteSin embargo, hacer esto desde un bloque o ayudante sería más limpio. A continuación se muestra una clase auxiliar que existiría en su propio módulo personalizado
Que inyectarías como dependencia en tu clase de bloque
fuente