Symfony3:Return 一个完整的 JsonResponse 循环
Symfony3: Return a full JsonResponse loop
我刚刚创建了一个项目来尝试 Algolia 搜索解决方案,它运行良好,但我无法 return JSON 响应。
这是我的代码
控制器:
/**
* @Route("/api/search/user/{query}", name="search_query")
*/
public function searchAction($query)
{
$entityManager = $this->getDoctrine()->getManagerForClass(User::class);
$users = $this->indexManager->search($query, User::class, $entityManager);
if($users) {
$result = $this->renderView('xxx/search_user.html.twig', [
'users' => $users
]);
return new JsonResponse(['success' => true, 'users' => [$result]]);
}
return new JsonResponse(['success' => false, 'users' => []]);
}
html:
{{ users[0].username }}
这段代码有效,但只有 return1 个用户,而不是所有用户,同上,如果我在我的 twig 文件中做一个循环,它将呈现所有用户,但不是以一种好的方式:
screenshot
感谢您的帮助,抱歉我的英语不好。
这是因为 twig 在响应后在服务器上创建了视图。
我建议你直接在控制器中创建用户数组并删除渲染视图的部分。
例如:
foreach($users as $user) {
$result[]['name'] = $user['name'];
}
然后使用 $result.
希望对您有所帮助,问候
我刚刚创建了一个项目来尝试 Algolia 搜索解决方案,它运行良好,但我无法 return JSON 响应。
这是我的代码
控制器:
/**
* @Route("/api/search/user/{query}", name="search_query")
*/
public function searchAction($query)
{
$entityManager = $this->getDoctrine()->getManagerForClass(User::class);
$users = $this->indexManager->search($query, User::class, $entityManager);
if($users) {
$result = $this->renderView('xxx/search_user.html.twig', [
'users' => $users
]);
return new JsonResponse(['success' => true, 'users' => [$result]]);
}
return new JsonResponse(['success' => false, 'users' => []]);
}
html:
{{ users[0].username }}
这段代码有效,但只有 return1 个用户,而不是所有用户,同上,如果我在我的 twig 文件中做一个循环,它将呈现所有用户,但不是以一种好的方式:
screenshot
感谢您的帮助,抱歉我的英语不好。
这是因为 twig 在响应后在服务器上创建了视图。
我建议你直接在控制器中创建用户数组并删除渲染视图的部分。
例如:
foreach($users as $user) {
$result[]['name'] = $user['name'];
}
然后使用 $result.
希望对您有所帮助,问候