Magento 2 Bild-URL in Controller oder Helfer holen?

9

So erhalten Sie das Bild in den Controller oder Helfer. Zum Beispiel der Pfad des Bildordners:

 /app/code/Nitesh/Module/view/frontend/web/images
 /app/code/Nitesh/Module/view/frontend/web/images/image.png
Nitesh
quelle

Antworten:

13

Verwenden Sie den folgenden Code, um die Bild-URL zu erhalten view

<img src="<?php echo $this->getViewFileUrl('Vendor_Module::images/image.png'); ?>" />

AKTUALISIEREN:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>
BornCoder
quelle
1
Diese Antwort ist nett und einfach. Die erste Option hat bei mir funktioniert.
Milan Simek
Wie komme ich in die Controller-Datei?
Jafar Pinjar
20

Um den Bildpfad in Ihrem Helper oder Controller zu erhalten, müssen Sie verwenden

use Magento\Framework\View\Asset\Repository;
use Magento\Framework\App\RequestInterface; // for $this->request

in Ihrer Datei.
Sobald Sie das Repository hinzugefügt und das Objekt assetRepo& erstellt haben request, rufen Sie den Bildpfad mit der Funktion auf.

$params = array('_secure' => $this->request->isSecure());
$this->assetRepo->getUrlWithParams('Nitesh_Module::images/image.png', $params);

Siehe vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])Funktion

BEARBEITEN

Um korrekte Bildpfade für Setup-Skripte, API-Aufrufe und Cronjobs zu erhalten, müssen Sie eine Emulation wie unten hinzufügen, um korrekte Bildpfade zu erhalten.

public function __construct(
    \Magento\Framework\View\Asset\Repository $assetRepo,
    \Magento\Framework\App\RequestInterface $request,
    \Magento\Store\Model\App\Emulation $appEmulation
)
{
    $this->assetRepo = $assetRepo;
    $this->request = $request;
    $this->appEmulation = $appEmulation;
}

public FunctionName($param){
    $this->appEmulation->startEnvironmentEmulation($storeId, \Magento\Framework\App\Area::AREA_FRONTEND, true);

    $params = array('_secure' => $this->request->isSecure());
    $this->assetRepo->getUrlWithParams('Nitesh_Module::images/image.png', $params);

    $this->appEmulation->stopEnvironmentEmulation();
}

Referenz: /magento//a/297121/2443

Jaimin Sutariya
quelle
Fehler kommt -> Hinweis: Undefinierte Eigenschaft: ... :: $ Anfrage in
Nitesh
Ich habe es von Ihrer Referenz erhalten
Nitesh
Vielen Dank Alter. Es ist wirklich hilfreich, um eine Bild-URL zu erhalten.
Nitesh
@Jaimin, das funktioniert nicht in wiederkehrendenDaten.php, hast du es dort versucht?
Jafar Pinjar
1
@JaiminSutariya, ja. Ich versuche , in RecurringData.php, wo ich Area_code als globalem gesetzt, so dass die URL mit _view / global bilden , die nicht funktioniert, können Sie versuchen , einmal mit RecurringData.php, dann u Sie die Idee , über das Thema zu bekommen
Jafar Pinjar