Magento 2 Отримати URL-адресу зображення в контролері чи помічнику?


9

Як отримати зображення в контролері чи помічнику. Наприклад, шлях до папки зображень:

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

Відповіді:


13

Використовуйте код нижче для отримання URL-адреси зображення view

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

ОНОВЛЕННЯ:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>

1
Ця відповідь приємна і проста. Перший варіант працював для мене.
Мілан Симек

як потрапити у файл контролера?
jafar pinjar

20

Щоб отримати шлях до зображення у своєму помічнику чи контролері, вам потрібно скористатися

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 = [])функції

EDIT

Щоб отримати правильні шляхи зображення для сценаріїв налаштування, викликів API та Cronjobs, вам потрібно буде додати емуляцію, як показано нижче, щоб отримати правильні шляхи зображення.

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

Довідка: https://magento.stackexchange.com/a/297121/2443


Помилка приходить -> Повідомлення: Не визначене властивість: ... :: $ запит у
Нітеш

отримав це від вашої довідкової машини
Нітеш

Дякую багато чоловіка. Це дуже корисно для отримання URL-адреси зображення.
Нітеш

@Jaimin, це не працює в recurringData.php, ти спробував там?
jafar pinjar

1
@JaiminSutariya, так. Я намагаюся в RecurringData.php, де я встановив Area_code як глобальний, тому Url формується з _view / global, який не працює, ви можете спробувати один раз з RecurringData.php, тоді ви отримаєте уявлення про проблему
jafar pinjar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.