Você pode obter o URL da mídia no seu arquivo de modelo usando o caminho abaixo, mas sem usar o gerenciador de objetos, é necessário definir o arquivo de bloqueio com o __construct()
método com define storeManagerInterface no método de construção.
No seu arquivo de bloco phtml, crie a função __construct.
public $ _storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
No seu arquivo phtml, chame o método abaixo para obter mediaurl,
$mediaUrl = $this ->_storeManager-> getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
echo $ mediaUrl;
Esta é a maneira correta de obter URLs de mídia no Magento 2.
\Magento\Framework\View\Element\Template
, você já possui uma instância deStoreManagerInterface
($this->_storeManager
).A partir da versão 2.1, não há maneira direta de obter o URL da mídia sem:
Rakesh mencionou uma maneira de fazê-lo.
Outra maneira é usar a variável protegida
$_urlBuilder
incluída em cada bloco, conforme definido emAbstractBlock
: https://github.com/magento/magento2/blob/f2d309a88298886460351c04973a4ff95c7a91c0/lib/internal/Magento/Framework/View/Element/AbstractBlock.php # L186Portanto, você não precisa modificar o construtor do seu bloco e pode simplesmente adicionar o seguinte método:
Em seu modelo, você pode ligar para:
fonte
Se você não quiser estender o \ Magento \ Framework \ View \ Element \ Template e desejar que o arquivo .phtml use o bloco \ Magento \ Framework \ View \ Element \ Template, poderá usar este atalho:
fonte
Vou usar a resposta de Raphael e estendê-la - mas, em vez de adicionar o método à classe de bloco, por que não criar um auxiliar e adicioná-lo lá?
Comece criando um novo módulo da maneira usual e, dentro da raiz, crie uma nova pasta chamada "Helper" e adicione o código necessário:
Depois de ativado e compilado, você poderá usá-lo em seu arquivo de modelo usando o seguinte método:
Espero que você (e potencialmente outros) achem isso de grande utilidade!
fonte
Pelo menos no 2.2.6, você pode usar
Magento\Framework\UrlInterface::getDirectUrl()
fonte