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'); ?>" />

UPDATE:

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

1
คำตอบนี้ดีและเรียบง่าย ตัวเลือกแรกทำงานให้ฉัน
Milan Simek

จะรับไฟล์คอนโทรลเลอร์ได้อย่างไร?
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 in
Nitesh

ได้จากข้อมูลอ้างอิงของคุณ
Nitesh

ขอบคุณมากคน มันมีประโยชน์มากในการรับ URL รูปภาพ
Nitesh

@Jaimin สิ่งนี้ไม่ทำงานใน recurringData.php คุณลองไปแล้วหรือยัง
jafar pinjar

1
@JaiminSutariya ใช่ ฉันกำลังลองใน RecurringData.php ที่ฉันตั้ง Area_code เป็น Global ดังนั้น Url กำลังสร้างด้วย _view / global ซึ่งไม่ทำงานคุณอาจลองใหม่อีกครั้งด้วย RecurringData.php จากนั้นคุณจะได้รับแนวคิดเกี่ยวกับปัญหานี้
jafar pinjar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.