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

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

【问题讨论】:

  • 您是指文件夹路径还是基本 URL?

标签: shopware


【解决方案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 发起的。
    猜你喜欢
    • 1970-01-01
    • 2015-09-09
    • 2011-08-30
    • 2019-01-17
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多