Obtenir l'URL du dossier de contenu statique (pour le backend)


8

Dans une classe de bloc qui est utilisée pour rendre un bouton dans le panneau d'administration, comment obtenir l'URL du dossier de contenu statique? Plus précisément, l' URL du dossier avec des images ?

Par exemple, dans le Company_Helloworldmodule, une image pour un bouton personnalisé se trouve ici:

app / code / Entreprise / Helloworld / view / adminhtml / web / images /

Test 1

J'ai essayé ceci:

$url = $this->getViewFileUrl('Company_Helloworld::images/icon.png');

Mais il essaie de récupérer l'image du Magento/backendthème:

http://example.com/pub/static/adminhtml/Magento/backend/en_US/Company_Helloworld/images/icon.png

tant que l'image n'est pas là, l'image est en fait dans le dossier du module:

app / code / Entreprise / Helloworld / view / adminhtml / web / images / icon.png

Test 2

Et ça:

$url = $this->getViewFileUrl('images/icon.png');

Mais il essaie également de récupérer l'image du Magento/backendthème, cette fois sans contexte de module:

http://example.com/pub/static/adminhtml/Magento/backend/en_US/images/icon.png

Existe-t-il un moyen de mettre l'image dans le module et non dans le thème backend?

Réponses:


8

Essayez d'utiliser:

echo $block->getViewFileUrl('Company_Helloworld::yourImage.png'); 

Comme deuxième argument de

\ Magento \ Framework \ View \ Element \ AbstractBlock :: getViewFileUrl ($ fileId, array $ params = [])

vous pouvez définir un tableau de paramètres suivants: " module ", " _secure ", " thème ", " zone " et " locale "


Merci, j'ai fatigué cela mais ça donne l'URL des actifs du Magento/backendthème. J'ai étendu ma question avec des exemples.
maginfortis

Exécutez la configuration bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . L'emplacement semble correct à première vue. Consultez également devdocs.magento.com/guides/v2.0/architecture/view/…
Arkadii Chyzhov

Cet emplacement est correct en supposant que je mets mon fichier image dans un dossier de Magento/backendthème. Mais je voudrais garder mon image dans le dossier de mon module. C'est possible?
maginfortis

Si j'ai bien compris, vous souhaitez utiliser une image dans le panneau d'administration, ai-je raison? "Magento / backend" est un nom de thème d'administration par défaut, donc c'est le thème correct pour votre exemple, que va les paramètres régionaux et le nom du module. Qu'est-ce qui vous embrouille? Recherchez les utilisations de la méthode getViewFileUrl dans le code et vous trouverez des exemples de travail pour les blocs et les modèles. Exécutez la configuration de bin / magento: static-content: deploy et vous devriez trouver une corrélation entre les actifs du module et pub / static
Arkadii Chyzhov

4

Essayez d'utiliser:

<?php
class ...

protected $_assetRepo;

public function __construct(
    ....
    \Magento\Framework\View\Asset\Repository $assetRepo,
    ....
) {
    ....
    $this->_assetRepo = $assetRepo;
    ....
}

Maintenant, dans votre cas, le nom du module est: Company_Helloworldet vous voulez à icon.pngpartir du imagesrépertoire afin

echo $this->_assetRepo->getUrl("Company_Helloworld::images/icon.png");

J'espère que cela vous aidera.

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.