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.
我需要将 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.