Magento 2 Получить URL-адрес изображения в контроллере или помощнике?
Как получить изображение в контроллере или помощнике. Например, путь к папке изображений:
/app/code/Nitesh/Module/view/frontend/web/images
/app/code/Nitesh/Module/view/frontend/web/images/image.png
9
Author: Khoa TruongDinh, 2017-02-06
2 answers
Используйте приведенный ниже код для получения URL-адреса изображения в view
<img src="<?php echo $this->getViewFileUrl('Vendor_Module::images/image.png'); ?>" />
ОБНОВЛЕНИЕ:
<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>
13
Author: BornCoder, 2017-02-06 12:48:12
Чтобы получить путь к изображению в вашем помощнике или контроллере, вам нужно использовать
use Magento\Framework\View\Asset\Repository;
use Magento\Framework\App\RequestInterface; // for $this->request
В вашем файле.
Как только вы добавите репозиторий и создадите объект assetRepo
& request
, вызов пути к изображению с помощью функции,
$params = array('_secure' => $this->request->isSecure());
$this->assetRepo->getUrlWithParams('Nitesh_Module::images/image.png', $params);
Обратитесь к функции vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])
РЕДАКТИРОВАТЬ
Чтобы получить правильные пути к изображениям для сценариев установки, вызовов API и заданий Cronjob, вам потребуется добавить эмуляцию, как показано ниже, чтобы получить правильные пути к изображениям.
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();
}
21
Author: Jaimin Sutariya, 2019-11-28 07:15:34