获取静态内容文件夹的URL(用于后端)


8

在用于在管理面板中呈现按钮的块类中,如何获取静态内容文件夹的URL?具体来说,带有图片的文件夹的URL是

例如,在Company_Helloworld模块中,自定义按钮的图像位于以下位置:

应用程序/代码/公司/ Helloworld / view / adminhtml / web / images /

测试1

我尝试了这个:

$url = $this->getViewFileUrl('Company_Helloworld::images/icon.png');

但是它尝试从Magento/backend主题中检索图像:

http://example.com/pub/static/adminhtml/Magento/backend/zh_CN/Company_Helloworld/images/icon.png

当图像不存在时,图像实际上在模块的文件夹中:

app / code / Company / Helloworld / view / adminhtml / web / images / icon.png

测试2

和这个:

$url = $this->getViewFileUrl('images/icon.png');

但它也尝试从Magento/backend主题中检索图像,这次没有模块上下文:

http://example.com/pub/static/adminhtml/Magento/backend/zh_CN/images/icon.png

有什么方法可以将图像放置在模块中而不是后端主题中?

Answers:


8

尝试使用:

echo $block->getViewFileUrl('Company_Helloworld::yourImage.png'); 

作为第二个论点

\ Magento \ Framework \ View \ Element \ AbstractBlock :: getViewFileUrl($ fileId,array $ params = [])

您可以设置下一个参数数组:“ 模块 ”,“ _ secure ”,“ 主题 ”,“ 区域 ”和“ 语言环境


谢谢,我对此感到厌倦,但是它提供了Magento/backend主题中资产的URL 。我通过示例扩展了我的问题。
maginfortis '16

运行bin / magento setup:static-content:deploydevdocs.magento.com/guides/v2.0/config-guide/cli/…。乍一看,位置看起来正确。还应考虑devdocs.magento.com/guides/v2.0/architecture/view/...
Arkadii Chyzhov

假设我将图像文件放在Magento/backend主题文件夹中,则此位置是正确的。但我想将图像保留在模块的文件夹中。可能吗?
maginfortis '16

据我了解,您想在管理面板中使用图片,对吗?“ Magento /后端”是默认管理主题的名称,因此与语言环境和模块名称相比,这是您示例的正确主题。什么让您感到困惑?在代码中查找方法getViewFileUrl的使用,您将找到块和模板的工作示例。运行bin / magento setup:static-content:deploy,您应该在模块和pub / static中找到资产之间的相关性
Arkadii Chyzhov

4

尝试使用:

<?php
class ...

protected $_assetRepo;

public function __construct(
    ....
    \Magento\Framework\View\Asset\Repository $assetRepo,
    ....
) {
    ....
    $this->_assetRepo = $assetRepo;
    ....
}

现在,在这种情况下,模块名称为:,Company_Helloworld并且您希望icon.pngimages目录中获取

echo $this->_assetRepo->getUrl("Company_Helloworld::images/icon.png");

希望这会帮助你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.