如何在 SilverStripe 的主题文件夹中创建 public 文件夹

How to create a public folder inside themes folder in SilverStripe

我正在处理遗留的 SilverStripe 项目。我正在尝试在主题文件夹中创建一个名为 "files" 的 public 文件夹。该文件夹中的所有文件都可以通过浏览器访问。

我创建了一个文件夹并在其中创建了一个文件。

当我从 URL 访问文件夹中的文件时,出现 404 错误。但是当我从 css、fonts、img 等其他文件夹访问文件时,它按预期工作。它不适用于我刚刚创建的 "files" 文件夹。我需要配置什么吗?

您需要 "expose" 项目 composer.json 中的文件夹,因此 运行ning composer vendor-expose 会将文件符号链接或复制到您的 public 资源文件夹。

您的 composer.json 将如下所示:

{
    "name": "app/myproject",
    "type": "silverstripe-project",
    "require": {
        "silverstripe/recipe-cms": "4.4.x-dev"
    },
    "extra": {
        "resources-dir": "_resources",
        "expose": [
            "themes/mytheme/dist",
            "themes/mytheme/files"
        ]
    }
}

最好将所有生成的公开文件(js、css)收集到名为 "dist" 的文件夹中,这样您就不必单独公开它们。

您可以手动调用 composer vendor-expose(例如,在每次文件更改后 windows 上,因为符号链接在 windows 下不起作用)并且它会在您 运行 时自动调用composer installcomposer update.

See docs.