Symfony 2 PUGXAutoCompleterBundle

Symfony 2 PUGXAutoCompleterBundle

我正在尝试使用:https://github.com/PUGX/PUGXAutoCompleterBundle/blob/master/Resources/doc/index.md

但是 ajax 请求 search_books,return 出错:

The controller must return a response (Array(results => Array(0=>Object,1=>Object,...) given

我猜问题出在 return compact('results'); 但我找不到解决方法。

感谢阅读。 M

文档中没有指定模板是如何呈现的(缺少注释?)。

我想您必须为正确的树枝添加正确的模板注释并正确管理 JSON 响应。

我使用这个包并在我的控制器中将数据呈现为:

/**
 * @Route("/autocomplete-user/search", name="acme_autocomplete_user_search")
 */
public function autocompleteUserSearchAction(Request $request)
{
    $q = $request->get('term');
    $userRepository = $this->get('acme.user_provider');
    $users = $userRepository->findLikeUsername($q);

    $results = array();
    foreach ($users as $user) {
        $results[] = array(
            'id' => $user->getId(),
            'name' => $user->getFullName(),
            'label' => sprintf("[%s] %s", $user->getUsername(), $user->getFullName())
        );
    }

    return new JsonResponse($results);
}

另一种方法是:

/**
 * @Route("/autocomplete-user/{id}", name="acme_autocomplete_user_get")
 */
public function autocompleteUserGetAction($id)
{
    $userRepository = $this->get('acme.user_provider');
    $user = $userRepository->find($id);

    return new Response($user->getUsername());
}

希望对您有所帮助

这个包的文档确实很糟糕。

如果您使用 Jquery-UI 库,Matteo 在前面 post 中所说的是正确的。如果你想使用 Select2 库,你必须这样修改代码:

/**
 * @Route("/autocomplete-user/search", name="acme_autocomplete_user_search")
 */
public function autocompleteUserSearchAction(Request $request)
{
    $q = $request->get('q');
    $userRepository = $this->get('acme.user_provider');
    $users = $userRepository->findLikeUsername($q);

    $results = array();
    foreach ($users as $user) {
        $results[] = array(
            'id' => $user->getId(),
            'text' => $user->getFullName())
        );
    }

    return new JsonResponse($results);
}

请注意,我的属性不再是 "term",而是 "q"

请注意,对于 Select2 库,默认的 Json 响应格式如下:

{
 more: false,
 results: [
    { id: "CA", text: "California" },
    { id: "AL", text: "Alabama" }
    ]
}

但在 PUGXAutoCompleterBundle 中它只需要:

[ { id: "CA", text: "California" },
      { id: "AL", text: "Alabama" } ]

另外,文档中没有提到支持的版本。它适用于我: jquery 1.11.3 和 jquery-ui 1.11.3 要么 jquery1.11.3 ans select2 3.5.2

希望可以节省您的时间