如何在Symfony 4函数中替换变量?

时间:2018-08-24 10:54:48

标签: php function symfony variables controller

我在控制器中创建了一个与实体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);
 }

但是我收到一条错误消息:

  

试图从全局名称空间中加载类“成员”。你是否   忘记了“使用”声明?

这与子弹的大写/小写有关吗?

1 个答案:

答案 0 :(得分:5)

我们所有的实体都可能位于src\Entity之类,并且取决于您如何设置每个实体将位于某个命名空间或诸如App\Entity之类的其他名称中。

此外,中的成员都是小写字母,但您的课程却以首字母大写开头。

您需要做的就是确保members变成Members,并说出您的意思

$item = new $slug()

您可能想要:

$fullClassName = 'App\\Entity\\' . ucwords($slug);
$item = new $fullClassName()`

尝试一下,让我知道你的生活吧!