pea*_*ove 0 php variables controller function symfony
我在Controller中创建了一个与Entity一起使用的函数Members.我现在要做的是使功能灵活,这样我就可以将它用于我所有其他实体.因此,实体的名称应该取决于slug.所以在这种情况下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);
}
Run Code Online (Sandbox Code Playgroud)
所以我要做的是用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);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息:
尝试从全局命名空间加载类"成员".你忘记了"使用"声明吗?
这是否与slug的大写/小写有关?
我们所有的实体都可能是这样的src\Entity,并且取决于你如何设置每个实体将在某些命名空间或其他名称中App\Entity.
而且,你的slug中的成员是小写的,但是你的课程以captital开头.
您需要做的就是确保members成为Members,并在您说的地方
$item = new $slug()
你可能想要:
$fullClassName = 'App\\Entity\\' . ucwords($slug);
$item = new $fullClassName()`
Run Code Online (Sandbox Code Playgroud)
试一试,让我知道你是怎么过的!