Magento 2 Uzyskaj adres URL obrazu w kontrolerze lub pomocniku?

9

Jak uzyskać obraz w kontrolerze lub pomocniku. Na przykład ścieżka folderu obrazów:

 /app/code/Nitesh/Module/view/frontend/web/images
 /app/code/Nitesh/Module/view/frontend/web/images/image.png
Nitesh
źródło

Odpowiedzi:

13

Użyj poniższego kodu, aby uzyskać adres URL obrazu view

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

AKTUALIZACJA:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>
BornCoder
źródło
1
Ta odpowiedź jest miła i prosta. Pierwsza opcja działała dla mnie.
Milan Simek
jak dostać się do pliku kontrolera?
jafar pinjar
20

Aby uzyskać ścieżkę obrazu w pomocniku lub kontrolerze, musisz użyć

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

w twoim pliku.
Po dodaniu repozytorium i utworzeniu obiektu assetRepo& requestwywołaj ścieżkę obrazu z funkcją,

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

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

EDYTOWAĆ

Aby uzyskać poprawne ścieżki obrazów dla skryptów instalacyjnych, wywołań API i Cronjobs, będziesz musiał dodać emulację jak poniżej, aby uzyskać prawidłowe ścieżki obrazu.

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

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

Jaimin Sutariya
źródło
Nadchodzi błąd -> Ogłoszenie: Niezdefiniowana właściwość: ... :: $ żądanie w
Nitesh
dostałem to od twojego odniesienia
Nitesh
Dzięki wielkie. Naprawdę pomaga uzyskać adres URL obrazu.
Nitesh
@Jaimin, to nie działa w recurringData.php, próbowałeś tam?
jafar pinjar
1
@JaiminSutariya, Tak. Próbuję w RecurringData.php, w którym ustawiłem kod_obszarowy jako Globalny, więc adres URL tworzy się z _view / global, który nie działa, możesz spróbować raz z RecurringData.php, a następnie dowiesz się o problemie
jafar pinjar