Magento 2: Pub / statischen Dateipfad abrufen

8

Ich muss die Datei PATH für ein Bild im pub/static/[VENDOR_THEME]Ordner erhalten.

Derzeit kann ich dies mit einem Helfer tun:

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

Gibt es eine integrierte Magento-Funktion, die dies erledigt, sodass ich keinen eigenen Helfer erstellen muss?

Minlare
quelle
Wie wäre es mit Ihrem Problem?
Khoa TruongDinh

Antworten:

8

Wie @Khoa TruongDinh angibt, können Sie mit der Magento\Framework\View\Asset\RepositoryDatei eine Dateiklasse abrufen Magento\Framework\View\Asset\File, mit der Sie dann verschiedene Daten abrufen können .

/** @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');

Um ein Asset in Ihren Themenordner zu bekommen, entfernen Sie app/design/frontend/VENDOR/THEME/webeinfach den Modulnamen wie folgt ....

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

Siehe Magento\Framework\View\Asset\FileFunktionen, mit denen Sie Dateidaten abrufen können.

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

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

// Get the content of the file
$asset->getContent();
Minlare
quelle
Dieser Code funktioniert nicht in RecurringData.php
jafar pinjar
0

In unserem Block sollten wir versuchen mit:

$block->getViewFileUrl('/')

Geben Sie hier die Bildbeschreibung ein

Schau mal:

  • 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: wir können verwendenMagento\Framework\View\Asset\Repository

Zum Beispiel: Ihr Bild befindet sich unter: 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);

Weitere Informationen finden Sie hier: Magento 2 Bild-URL im Controller oder Helfer abrufen?

Khoa TruongDinh
quelle
2
Ich brauche den Pfad - nicht die URL
Minlare
@minlare siehe meine aktualisierte Antwort.
Khoa TruongDinh
Dieser Code, den ich in RecurringData.php versuche, funktioniert nicht
jafar pinjar