URL des statischen Inhaltsordners abrufen (für Backend)


8

Wie kann man innerhalb einer Blockklasse, die zum Rendern einer Schaltfläche im Admin-Bereich verwendet wird, die URL des statischen Inhaltsordners abrufen? Insbesondere URL des Ordners mit Bildern ?

Im Company_HelloworldModul befindet sich beispielsweise ein Bild für eine benutzerdefinierte Schaltfläche hier:

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

Test 1

Ich habe es versucht:

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

Es wird jedoch versucht, das Bild aus dem Magento/backendThema abzurufen :

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

Während das Bild nicht vorhanden ist, befindet sich das Bild tatsächlich im Ordner des Moduls:

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

Test 2

Und das:

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

Es wird aber auch versucht, das Bild aus dem Magento/backendThema abzurufen , diesmal ohne Modulkontext:

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

Gibt es eine Möglichkeit, das Bild in das Modul und nicht in das Backend-Thema einzufügen?

Antworten:


8

Versuchen zu benutzen:

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

Als zweites Argument von

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

Sie können ein Array der nächsten Parameter festlegen : " Modul ", " _secure ", " Thema ", " Bereich " und " Gebietsschema "


Vielen Dank, ich habe es satt, aber es gibt eine URL der Assets aus dem Magento/backendThema. Ich habe meine Frage mit Beispielen erweitert.
Maginfortis

Führen Sie das bin / magento-Setup aus: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . Die Lage sieht auf den ersten Blick korrekt aus. Schauen Sie auch in devdocs.magento.com/guides/v2.0/architecture/view/…
Arkadii Chyzhov

Dieser Speicherort ist korrekt, vorausgesetzt, ich lege meine Bilddatei in einen Themenordner Magento/backend. Aber ich möchte mein Bild im Ordner meines Moduls behalten. Ist es möglich?
Maginfortis

Wie ich verstanden habe, möchten Sie ein Bild im Admin-Bereich verwenden. Stimmt das? "Magento / Backend" ist ein Name des Standard-Admin-Themas. Das ist also das richtige Thema für Ihr Beispiel, als das Gebietsschema und der Modulname. Was verwirrt dich? Suchen Sie im Code nach Verwendungen der Methode getViewFileUrl, und Sie finden Arbeitsbeispiele für Blöcke und Vorlagen. Führen Sie bin / magento setup: static-content: deploy aus und Sie sollten die Korrelation zwischen Assets im Modul und pub / static finden
Arkadii Chyzhov

3

Versuchen zu benutzen:

<?php
class ...

protected $_assetRepo;

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

Nun, in Ihrem Fall ist der Modulname: Company_Helloworldund Sie möchten icon.pngaus dem imagesVerzeichnis so

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

Hoffe das wird dir helfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.