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
希望可以节省您的时间
我正在尝试使用: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
希望可以节省您的时间