Magento 2: Nhận đường dẫn tệp pub / static


8

Tôi cần lấy tệp PATH cho một hình ảnh trong pub/static/[VENDOR_THEME]thư mục.

Hiện tại, tôi có thể làm điều này bằng cách sử dụng một trình trợ giúp:

public function __construct(
    \Magento\Framework\App\Helper\Context $context,
    \Magento\Framework\View\Asset\Repository $assetRepository,
    \Magento\Framework\App\Filesystem\DirectoryList $directoryList
) {
    parent::__construct($context);
    $this->_assetRepo = $assetRepository;
    $this->_directoryList = $directoryList;
}

public function getImagePath($image)
{
    return $this->_directoryList->getPath(DirectoryList::STATIC_VIEW) . 
        '/' . 
        $this->_assetRepo->getStaticViewFileContext()->getPath() . 
        '/' . 
        $image;
}

Có chức năng Magento tích hợp nào xử lý việc này không, vì vậy tôi không phải tạo trợ giúp riêng?


Làm thế nào về vấn đề của bạn?
Khoa TruongDinh 27/2/2017

Câu trả lời:


8

Như @Khoa TruongDinh nói rằng bạn có thể sử dụng Magento\Framework\View\Asset\Repositoryđể lấy một lớp tệp Magento\Framework\View\Asset\File, sau đó bạn có thể sử dụng để lấy các dữ liệu khác nhau.

/** @var `Magento\Framework\View\Asset\Repository $assetRepository **/
 $asset = $this->assetRepository->createAsset('Magento_Catalog::images/image.png');
 $asset = $this->assetRepository->createAsset('My_Module::images/image.png');

Để có được tài sản trong thư mục chủ đề của bạn, app/design/frontend/VENDOR/THEME/webchỉ cần tước tên mô-đun như dưới đây ....

$asset = $this->assetRepository->createAsset('images/image.png');

Xem Magento\Framework\View\Asset\Filecác chức năng bạn có thể sử dụng để lấy dữ liệu tệp.

// Get the file url
$asset->getUrl();

// Get the file path
$asset->getFilePath();

// Get the content of the file
$asset->getContent();

mã này không hoạt động trong RecurringData.php
jafar pinjar

0

Trong khối của chúng tôi, chúng tôi nên thử với:

$block->getViewFileUrl('/')

nhập mô tả hình ảnh ở đây

Hãy xem:

  • vendor/magento/module-backend/view/adminhtml/templates/page/js/require_js.phtml

  • vendor/magento/module-theme/view/frontend/templates/page/js/require_js.phtml

EDIT: chúng ta có thể sử dụngMagento\Framework\View\Asset\Repository

Ví dụ: hình ảnh của bạn ở dưới: app/code/Vendor/Module/view/frontend/web/images/image.png

/** @var `Magento\Framework\View\Asset\Repository $assetRepository **/

$this->assetRepository->getUrlWithParams('Vendor_Module::images/image.png', $params);

Xem thêm tại đây: Magento 2 Nhận Url hình ảnh trong bộ điều khiển hoặc trình trợ giúp?


2
Tôi cần PATH - không phải url
minlare

@minlare xem câu trả lời cập nhật của tôi.
Khoa TruongDinh

Mã này tôi đang thử trong RecurringData.php, mã này không hoạt động
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.