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 = [])기능 참조

편집하다

설정 스크립트, 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


오류가 발생합니다-> 공지 : 정의되지 않은 속성 : ... :: $ request
Nitesh

참고 문헌에서 얻었습니다
Nitesh

고마워요. 이미지 URL을 얻는 데 정말 도움이됩니다.
Nitesh

@Jaimin, 이것은 recurringData.php에서 작동하지 않습니다.
jafar pinjar

1
@JaiminSutariya, 예. URL이 _view / 작동하지 않는 세계로 형성되도록 나는 다음 U 당신이 문제에 대한 아이디어를 얻을 것이다, 한 번 RecurringData.php으로 시도 할 수 있습니다, 전 세계로 AREA_CODE을 설정 RecurringData.php에 노력하고있어
jafar pinjar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.