热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

尝试使用文件系统创建文件

当我提交表单时,我会使用表单中的信息创建一个json。然后我尝试将这些信息写入一个文件中,但我有一些困难。我使用SymfonyComponentFiles

当我提交表单时,我会使用表单中的信息创建一个 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();
}
}






推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • Kubernetes Services详解
    本文深入探讨了Kubernetes中的服务(Services)概念,解释了如何通过Services实现Pods之间的稳定通信,以及如何管理没有选择器的服务。 ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
author-avatar
xxyy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有