Magento 2 Nhận Url hình ảnh trong bộ điều khiển hoặc trình trợ giúp?


9

Làm thế nào để có được hình ảnh trong bộ điều khiển hoặc người trợ giúp. Ví dụ: đường dẫn của thư mục hình ảnh:

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

Câu trả lời:


13

Sử dụng mã dưới đây để nhận url hình ảnh trong view

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

CẬP NHẬT:

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

1
Câu trả lời này là tốt đẹp và đơn giản. Tùy chọn đầu tiên làm việc cho tôi.
Milan Simek

Làm thế nào để có được trong tập tin điều khiển?
jafar pinjar

20

Để có được Đường dẫn hình ảnh trong Trình trợ giúp hoặc Trình điều khiển của bạn, bạn cần sử dụng

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

trong tập tin của bạn
Khi bạn thêm kho lưu trữ và tạo đối tượng assetRepo& request, hãy gọi đường dẫn hình ảnh với chức năng,

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

Tham khảo vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])chức năng

BIÊN TẬP

Để có được đường dẫn hình ảnh chính xác cho các tập lệnh Thiết lập, lệnh gọi API và Cronjobs, bạn sẽ cần phải thêm mô phỏng như bên dưới để có được đường dẫn hình ảnh chính xác.

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

Tham khảo: https://magento.stackexchange.com/a/297121/2443


Lỗi đến -> Lưu ý: Thuộc tính không xác định: ... :: $ request in
Nitesh

lấy nó từ công ty tham chiếu của bạn
Nitesh

Cám ơn nhiều, ông bạn. Nó thực sự hữu ích để có được url hình ảnh.
Nitesh

@Jaimin, cái này không hoạt động trong recurringData.php, bạn đã thử ở đó chưa?
jafar pinjar

1
@JaiminSutariya, vâng. Tôi đang thử trong RecurringData.php, nơi tôi đặt Area_code là Toàn cầu, vì vậy Url đang hình thành với _view / global không hoạt động, bạn có thể thử một lần với RecurringData.php, sau đó bạn sẽ biết ý tưởng về vấn đề này
jafar pinjar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.