Vous pouvez obtenir l'url du média dans votre fichier de modèle en utilisant la méthode ci-dessous mais sans utiliser objectmanager, vous devez définir le fichier Block avec la __construct()
méthode avec define storeManagerInterface dans la méthode de construction.
Dans votre fichier Block phtml, créez la fonction __construct.
public $ _storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Dans votre fichier phtml, appelez la méthode ci-dessous pour obtenir mediaurl,
$mediaUrl = $this ->_storeManager-> getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
echo $ mediaUrl;
C'est la bonne façon d'obtenir l'URL des médias dans Magento 2.
Rakesh Jesadiya
la source
\Magento\Framework\View\Element\Template
, vous avez déjà une instance deStoreManagerInterface
($this->_storeManager
).Depuis 2.1, il n'y a aucun moyen direct d'obtenir l'URL du média sans:
Rakesh a mentionné une façon de procéder.
Une autre façon consiste à utiliser la variable protégée
$_urlBuilder
qui est incluse pour chaque bloc tel que défini dansAbstractBlock
: https://github.com/magento/magento2/blob/f2d309a88298886460351c04973a4ff95c7a91c0/lib/internal/Magento/Framework/View/Element/AbstractBlock.php # L186Ainsi, vous n'avez pas à modifier le constructeur de votre bloc et pouvez simplement ajouter la méthode suivante:
Ensuite, dans votre modèle, vous pouvez appeler:
la source
Si vous ne voulez pas avoir la difficulté d'étendre \ Magento \ Framework \ View \ Element \ Template et que vous souhaitez que votre fichier .phtml utilise le bloc \ Magento \ Framework \ View \ Element \ Template, vous pouvez utiliser ce raccourci:
la source
Je vais utiliser la réponse de Raphaël et l'étendre - mais au lieu d'ajouter la méthode dans la classe de bloc, pourquoi ne pas créer un assistant et l'ajouter là-dedans?
Commencez par créer un nouveau module de la manière habituelle, et dans la racine, créez un nouveau dossier appelé "Helper" et ajoutez-y le code requis:
Une fois activé et compilé, vous pourrez l'utiliser dans votre fichier modèle en utilisant la méthode suivante:
J'espère que vous (et potentiellement d'autres) trouverez cela d'une grande utilité!
la source
Au moins en 2.2.6, vous pouvez utiliser
Magento\Framework\UrlInterface::getDirectUrl()
la source