php - 如何替换 Symfony 4 函数中的变量?
问题描述
我在我的 Controller 中创建了一个与 Entity 一起使用的函数Members
。我现在要做的是使功能灵活,以便我也可以将它用于所有其他实体。因此,实体的名称应取决于蛞蝓。所以在这种情况下slug = members
:
/**
* @Route("/pages/{slug}/forms", name="forms", methods={"POST", "GET"})
*/
public function form($slug, Request $request){
$item = new Members();
$item= $this->getDoctrine()->getRepository(Members::class)->find($id);
}
所以我想做的是用 slug 替换实体名称:
/**
* @Route("/pages/{slug}/forms", name="forms", methods={"POST", "GET"})
*/
public function form($slug, Request $request){
$item = new $slug();
$item= $this->getDoctrine()->getRepository($slug::class)->find($id);
}
但我收到一条错误消息:
试图从全局命名空间加载类“成员”。您是否忘记了“使用”声明?
这与蛞蝓的大写/小写有关吗?
解决方案
我们所有的实体可能都在src\Entity
类似App\Entity
.
此外,您的 slug 中的成员是小写的,但是您的课程以大写字母开头。
你需要做的就是确保members
成为Members
,以及你说的地方
$item = new $slug()
你可能想要:
$fullClassName = 'App\\Entity\\' . ucwords($slug);
$item = new $fullClassName()`
试一试,让我知道你的进展如何!
推荐阅读
- postgresql - 持久化 docker postgres 数据量,同时允许本地套接字访问(开发容器)
- .net - 如果我通过编程知道aws用户名和密码,如何获取访问密钥和秘密访问密钥
- ios - 崩溃 ERROR_CGDataProvider_BufferIsNotReadable + 16 仅适用于 iOS >= 11.3
- javascript - 在 Chrome 控制台中没有任何线索的功能失调的 jQuery 函数
- jmeter - 在 JMeter 中提取响应的主体并在其他请求中使用
- javascript - 如何仅在移动设备中运行脚本
- c# - 聚合来自两个集合的数据
- php - 在 codeigniter 中为 foreach() 提供的参数无效
- arrays - JQ:计算字符串出现的次数
- c++ - 在基类和派生类中重载运算符