Chemin d'accès au support Magento 2.1 dans un fichier .phtml


9

Comment obtenir le chemin multimédia dans Magento 2.1. J'ai essayé beaucoup d'option mais ça ne marche pas?

Je veux afficher l'image en front-end dans un fichier .phtml.


Pouvez-vous nous montrer ce que vous avez essayé jusqu'à présent et quels ont été les résultats associés?
Julien Lachal

Réponses:


11

vous pouvez obtenir le chemin du média par la méthode $ object

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

méthode des usines

<?php
    namespace Namespace\Modulename\Block;
    use Magento\Framework\ObjectManagerInterface;

    class Banners extends Template
    {

        protected $objectManager;
        public function __construct( 
            ....... 
            ObjectManagerInterface $objectManager
                       ...) {

                    ...........
                    $this->objectManager = $objectManager;

                    ...............
        }
        public function getMediaUrl(){

            $media_dir = $this->objectManager->get('Magento\Store\Model\StoreManagerInterface')
                ->getStore()
                ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

            return $media_dir;
        }
    }
    ........
?>

dans le fichier phtml

<?php echo $block->getMediaUrl(); ?>

11

L'utilisation d'Object Manager est déconseillée selon les normes de codage de Magento. Dans un fichier modèle, nous pouvons obtenir l'URL du média en utilisant le code suivant:

$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()

Conformément à la recommandation de Magento, la racine du document de votre site Web doit se trouver à l'extérieur du pubrépertoire pendant le développement et elle doit être à l'intérieur du pubrépertoire lorsqu'elle est déplacée en production.

Par conséquent, nous ne pouvons pas coder en dur le pubrépertoire lors de l'obtention de l'URL du média dans les fichiers de modèle. Le code ci-dessus vous donnera l'URL de média correcte quel que soit l'emplacement racine de votre document.


1
+1 Penser à ajouter 20 lignes de code pour le Gestionnaire d'objets semble horrible à considérer.
Mohammed Joraid

7

Obtenir le chemin multimédia par objectManager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

Obtenir le chemin d'accès au média par injection de dépendance

protected $_storeManager;

public function __construct( 
    ...
    \Magento\Store\Model\StoreManagerInterface $storeManager,
    ...
) {
    ...
    $this->_storeManager = $storeManager;
    ...
}

public function getMediaUrl()
{
    $mediaUrl = $this->_storeManager
                     ->getStore()
                     ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
    return $mediaUrl;
}

Appelez maintenant la fonction getMediaUrl()en phtml

<?php echo $block->getMediaUrl(); ?>

0

$ this -> _ storeManager-> getStore () -> getBaseUrl (\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);

Veuillez vérifier ce code. Cela vous donnera un chemin médiatique.


2
Cela ne fonctionne pas dans un fichier .phtml car la propriété _storeManager est protégée
simonthesorcerer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.