Ottieni l'URL della cartella del contenuto statico (per il back-end)


8

All'interno di una classe di blocchi utilizzata per il rendering di un pulsante nel pannello di amministrazione, come ottenere l'URL della cartella del contenuto statico? In particolare, l' URL della cartella con le immagini ?

Ad esempio, nel Company_Helloworldmodulo si trova un'immagine per un pulsante personalizzato qui:

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

Test 1

Ho provato questo:

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

Ma cerca di recuperare l'immagine dal Magento/backendtema:

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

mentre l'immagine non è presente, l'immagine si trova effettivamente nella cartella del modulo:

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

Test 2

E questo:

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

Ma cerca anche di recuperare l'immagine dal Magento/backendtema, questa volta senza il contesto del modulo:

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

Esiste un modo per inserire l'immagine nel modulo e non nel tema back-end?

Risposte:


8

Prova ad usare:

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

Come secondo argomento di

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

puoi impostare un array di parametri successivi: " module ", " _secure ", " theme ", " area " e " locale "


Grazie, mi sono stancato, ma fornisce l'URL delle risorse dal Magento/backendtema. Ho esteso la mia domanda con esempi.
maginfortis,

Esegui setup bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . La posizione sembra corretta a prima vista. Guarda anche su devdocs.magento.com/guides/v2.0/architecture/view/…
Arkadii Chyzhov il

Questa posizione è corretta supponendo che io abbia inserito il mio file di immagine in una cartella di Magento/backendtemi. Ma vorrei mantenere la mia immagine nella cartella del mio modulo. È possibile?
maginfortis,

Come ho capito, vuoi usare un'immagine nel pannello di amministrazione, vero? "Magento / backend" è un nome del tema di amministrazione predefinito, quindi questo è il tema corretto per il tuo esempio, che va locale e il nome del modulo. Cosa ti confonde? Cerca gli usi del metodo getViewFileUrl nel codice e troverai esempi funzionanti per blocchi e modelli. Esegui setup bin / magento: static-content: deploy e dovresti trovare la correlazione tra risorse nel modulo e pub / static
Arkadii Chyzhov

4

Prova ad usare:

<?php
class ...

protected $_assetRepo;

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

Ora, nel tuo caso il nome del modulo è: Company_Helloworlde lo vuoi icon.pngdalla imagesdirectory così

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

Spero che questo ti possa aiutare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.