我在控制器中创建了一个与实体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);
}
所以我想做的是将实体名称替换为子弹:
/**
* @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);
}
但是我收到一条错误消息:
试图从全局名称空间中加载类“成员”。你是否 忘记了“使用”声明?
这与子弹的大写/小写有关吗?
答案 0 :(得分:5)
我们所有的实体都可能位于src\Entity
之类,并且取决于您如何设置每个实体将位于某个命名空间或诸如App\Entity
之类的其他名称中。
此外,中的成员都是小写字母,但您的课程却以首字母大写开头。
您需要做的就是确保members
变成Members
,并说出您的意思
$item = new $slug()
您可能想要:
$fullClassName = 'App\\Entity\\' . ucwords($slug);
$item = new $fullClassName()`
尝试一下,让我知道你的生活吧!