当我提交表单时,我会使用表单中的信息创建一个 json。然后我尝试将这些信息写入一个文件中,但我有一些困难。
我使用Symfony\Component\Filesystem\Filesystem然后我使用 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');
Run Code Online (Sandbox Code Playgroud)
将此添加到您的 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');
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过$projectDirectory在服务/控制器的构造函数中命名参数来注入您的项目目录:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
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();
}
}
Run Code Online (Sandbox Code Playgroud)
KernelInterface在我们这个时代,建议较少:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\KernelInterface;
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |