Symfony4 如何调用 public 文件夹中的文件?

Symfony4 how to call a file in public folder?

我需要将 yaml 文件显示为数组,但我无法显示它。

我创建了一个服务,我的控制器调用了这个服务。

在我的服务中,我尝试这样调用我的 yaml :

$value = Yaml::parseFile('public\assets\organizations.yaml');
return $value;

但是 return 我那个错误 :

File "public\assets\organizations.yaml" does not exist.

您指定的文件具有相对 路径。这不会相对于它所在的文件进行解析,而是相对于执行脚本时您所在的当前工作目录进行解析。由于这取决于各种因素,所以总是很麻烦。

因此您应该始终使用绝对路径。在 symfony 中,您可以获得项目的基本路径 via the kernel.project_dir configuration parameter。 您的代码没有提供足够的上下文来理解您如何或在何处使用它。但是如果是inside a controller extending AbstractController you can use getParameter():

$projectDir = $this->getParameter('kernel.project_dir');
$absolutePath = $projectDir . '/public/assets/organizations.yml';

$value = Yaml::parseFile($absolutePath);
return $value;

另请注意,使用 \ 作为目录分隔符在 Linux/Unix-like 系统下不起作用,其中 / 用作目录分隔符! 由于 / 也将作为 Windows 下的目录分隔符,因此最容易使用它来实现跨 OS 兼容性。或者使用 DIRECTORY_SEPARATOR constant.