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\ScopeConfigInterface
en tu bloque:Crea el método
getStoreName()
y llame a su plantilla
echo $this->getStoreName()
fuente
\Magento\Store\Model\StoreManagerInterface $storeManager
en 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
Template
bloque, inyecte dependencia\Magento\Store\Model\StoreManagerInterface
en la construcción.Luego en plantilla:
fuente
Para obtener un valor de configuración de tienda como
general/store_information/name
puede 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