Magento 2 Dapatkan Url gambar di controller atau helper?

9

Cara mendapatkan gambar di controller atau helper. Misalnya, jalur folder gambar:

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

Jawaban:

13

Gunakan kode di bawah ini untuk mendapatkan url gambar view

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

MEMPERBARUI:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>
BornCoder
sumber
1
Jawaban ini bagus dan sederhana. Opsi pertama bekerja untuk saya.
Milan Simek
bagaimana cara masuk file pengontrol?
jafar pinjar
20

Untuk mendapatkan Image Path di Helper atau Controller Anda, Anda harus menggunakan

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

dalam file Anda.
Setelah Anda menambahkan repositori dan membuat objek assetRepo& request, panggil jalur gambar dengan fungsi,

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

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

EDIT

Untuk mendapatkan jalur gambar yang benar untuk skrip Pengaturan, panggilan API dan Cronjobs, Anda harus menambahkan emulasi seperti di bawah ini untuk mendapatkan jalur gambar yang benar.

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();
}

Referensi: https://magento.stackexchange.com/a/297121/2443

Jaimin Sutariya
sumber
Galat datang -> Pemberitahuan: Properti tidak terdefinisi: ... :: $ request in
Nitesh
dapatkan dari referensi Anda ty
Nitesh
Terima kasih banyak. Sangat membantu untuk mendapatkan url gambar.
Nitesh
@Jaimin, ini tidak berfungsi di recurringData.php, sudahkah Anda mencobanya?
jafar pinjar
1
@JaiminSutariya, Ya. Saya mencoba di RecurringData.php, di mana saya menetapkan Area_code sebagai Global, sehingga Url terbentuk dengan _view / global yang tidak berfungsi, Anda dapat mencoba sekali dengan RecurringData.php, maka Anda akan mendapatkan ide tentang masalah ini
jafar pinjar