Symfony3:返回完整的JsonResponse循环

时间:2018-08-01 16:22:22

标签: php symfony search algolia

我刚刚创建了一个项目来尝试使用Algolia搜索解决方案,并且运行良好,但是我无法返回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 }}

此代码有效,但仅返回1个用户,而不是所有用户,同上,如果我在twig文件中执行循环,它将呈现所有用户,但效果不佳:

screenshot

感谢您的帮助,对不起我的英语。

1 个答案:

答案 0 :(得分:0)

这是因为twig在响应后在服务器上创建了视图。

我建议您直接在控制器内部直接创建users数组,并删除渲染视图的一部分。

例如:

foreach($users as $user) {
$result[]['name'] = $user['name'];
}

,然后使用$ result。

希望对您有帮助