作者:xxyy | 来源:互联网 | 2023-09-23 12:28
当我提交表单时,我会使用表单中的信息创建一个 json。然后我尝试将这些信息写入一个文件中,但我有一些困难。
我使用SymfonyComponentFilesystemFilesystem
然后我使用 dumpFile :
$filesystem->dumpFile('%kernel.project_dir%/src/Json/file.json', $jsonContent)
。
文件夹 Json 已经存在,如果我转储 $jsonContent 我得到了信息,但从未创建该文件。
我做错了什么?
回答
该Filesystem
组件不会像%kernel.project_dir%
. 您必须从依赖项注入中检索项目目录,然后使用它来构建整个路径:
// Get the project directory in a way or another:
$projectDir = $kernel->getProjectDir();
// Store your file:
$fs = new Filesystem();
$fs->dumpFile("$projectDir/src/Json/file.json", 'Hello World');
获取项目目录的一些方法
1.通过使用services.yaml
将此添加到您的 services.yaml 中:
// Get the project directory in a way or another:
$projectDir = $kernel->getProjectDir();
// Store your file:
$fs = new Filesystem();
$fs->dumpFile("$projectDir/src/Json/file.json", 'Hello World');
然后,您可以通过$projectDirectory
在服务/控制器的构造函数中命名参数来注入您的项目目录:
namespace AppController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFilesystemFilesystem;
class HomeController
{
public function index(string $projectDirectory): Response
{
// Store your file:
$fs = new Filesystem();
$fs->dumpFile("$projectDirectory/src/Json/file.json", 'Hello World');
return new Response();
}
}
2.通过注入 KernelInterface
在我们这个时代,建议较少:
namespace AppController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFilesystemFilesystem;
use SymfonyComponentHttpKernelKernelInterface;
class HomeController
{
public function index(KernelInterface $kernel): Response
{
$projectDirectory = $kernel->getProjectDir();
// Store your file:
$fs = new Filesystem();
$fs->dumpFile("$projectDirectory/src/Json/file.json", 'Hello World');
return new Response();
}
}