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

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'); ?>

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.