如何在 Shopware 6 中获取公用文件夹绝对路径?

Posted

技术标签:

【中文标题】如何在 Shopware 6 中获取公用文件夹绝对路径?【英文标题】:How to get public folder absolute path in Shopware 6? 【发布时间】:2021-10-19 12:17:57 【问题描述】:

我正在尝试在 shopware 6 中获取公共文件夹路径,以便使用文件系统在其中创建目录。有人知道吗?

【问题讨论】:

您是指文件夹路径还是基本 URL? 【参考方案1】:

你可以看看服务

shopware.filesystem.public 定义在

vendor/shopware/core/Framework/DependencyInjection/filesystem.xml作为

   <service class="League\Flysystem\FilesystemInterface" id="shopware.filesystem.public" public="true">
        <factory service="Shopware\Core\Framework\Adapter\Filesystem\FilesystemFactory" method="factory"/>
        <argument>%shopware.filesystem.public%</argument>
    </service>

当你注入这个服务时,你可以调用

$publicFileSystem->createDir('folder')

创建您的文件夹。

这并不能完全回答有关如何获取路径的问题 - 但您通常不需要它,因为您不会直接与文件系统交互,而是通过 Flysystem 类进行交互。

如果你真的需要路径,你可以尝试类似

$publicFileSystem->getMetaData('.')['path']

这未经我测试,如前所述,您可能只是不需要路径。另请记住,底层文件系统甚至可能不是本地存储。

【讨论】:

【参考方案2】:

也许不完全是防弹的,但大多数时候你也可以使用getcwd();

https://www.php.net/manual/en/function.getcwd.php

我主要用它来编写像error_log(print_r($data, true)."\n", 3, getcwd().'/error.log');这样的调试文件

【讨论】:

您确定大部分时间获取的是 public/ 文件夹,而不是 Shopware 根目录吗? 每次我测试它时它都能正常工作,即使使用控制台命令也是如此。我猜是因为一切都是由 public 文件夹中的 index.php 发起的。

以上是关于如何在 Shopware 6 中获取公用文件夹绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章

Shopware 6 后端控制器路径

Shopware 6:在自己的自定义管理模块中获取 PHP 数据

Shopware 6 - 如何在 SW6 的插件系统配置中添加按钮组件

通过 ID 获取 Shopware 6 实体的推荐方法是啥?

Shopware 6 如何在scss中使用配置好的主题原色?

如何在 Shopware 6 中导入期间替换(不添加)属性?