如何在 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:在自己的自定义管理模块中获取 PHP 数据
Shopware 6 - 如何在 SW6 的插件系统配置中添加按钮组件
通过 ID 获取 Shopware 6 实体的推荐方法是啥?