ajax查询后如何更新knppaginatorbundle的分页模板
Im使用knppaginatorbundle创建分页。我已经创建了一个jquery代码来使用ajax选择数据 当我点击页码时一切正常,内容加载了正确的数据。 但是我有一个问题,ajax查询后分页模板没有改变:ajax查询后如何更新knppaginatorbundle的分页模板,ajax,symfony,pagination,Ajax,Symfony,Pagination,Im使用knppaginatorbundle创建分页。我已经创建了一个jquery代码来使用ajax选择数据 当我点击页码时一切正常,内容加载了正确的数据。 但是我有一个问题,ajax查询后分页模板没有改变: “上一个链接”和“下一个链接”值必须更改 必须禁用当前页面 还有其他需要做的改变 我该怎么做 public function listAction($page, Request $request) { $em = $this->getDoctrine()->getM
- “上一个链接”和“下一个链接”值必须更改
- 必须禁用当前页面
- 还有其他需要做的改变
public function listAction($page, Request $request)
{
$em = $this->getDoctrine()->getManager();
$paginator = $this->get('knp_paginator');
$qb = $em->getRepository('AppBundle:Travel')->getListTravels();
$pagination = $paginator->paginate(
$qb, $request->query->get('page', $page), 3
);
//ajax request
if ($request->isXmlHttpRequest()) {
$view = $this->renderView('@App/Frontend/Travel/list.html.twig', array(
'pagination' => $pagination
));
$response = new JsonResponse(array('ok' => $view));
return $response;
}
return $this->render('AppBundle:Frontend/Travel:travel-list-view.html.twig', array(
'pagination' => $pagination,
));
}
我已将attr数据目标添加到分页模板,如下所示:
<a data-target="{{ page }}" href="{{ path(route, query|merge({(pageParameterName): page})) }}">{{ page }}</a>
如果其他人需要解决方案,有两种方法
JsonResponse
。然后在成功时通过jQuery替换DOM中的分页元素处理器
,您必须在服务中添加自动连线别名。yaml
PaginatorInterface
您应该构建$pagination
对象(PaginationInterface
)Processor
为细枝构建上下文数组SlidingPagination
对象,但得到了$pagination
,这是PaginationInterface
——不过看起来还可以
if ($request->isXmlHttpRequest()) {
$view = $this->render('@App/Frontend/Travel/list.html.twig', array(
'pagination' => $pagination
))->getContent();
$paginationContext = $processor->render($pagination);
$twig = $this->get('twig');
$paginationHtml = $twig->render($pagination->getTemplate(), $paginationContext);
$response = new JsonResponse(['view' => $view, 'paginationHtml' => $paginationHtml]);
return $response;
}
然后在jQuery中
success: function (msg) {
if (msg["ok"] === undefined) {
alert('error');
} else {
$("#mydiv").html(msg["view"]);
$("#myDivContainingPagination").html(msg["paginationHtml"])
}
}
knppaginatorbundle不是设计用来通过javascript更新的。那么我该怎么办呢?我不知道,但可能会使用像jPaginate这样的javascript库:
Knp\Bundle\PaginatorBundle\Helper\Processor: '@knp_paginator.helper.processor'
$paginationContext = $processor->render($pagination);
$twig = $this->get('twig');
$paginationString = $twig->render($pagination->getTemplate(), $paginationContext);
if ($request->isXmlHttpRequest()) {
$view = $this->render('@App/Frontend/Travel/list.html.twig', array(
'pagination' => $pagination
))->getContent();
$paginationContext = $processor->render($pagination);
$twig = $this->get('twig');
$paginationHtml = $twig->render($pagination->getTemplate(), $paginationContext);
$response = new JsonResponse(['view' => $view, 'paginationHtml' => $paginationHtml]);
return $response;
}
success: function (msg) {
if (msg["ok"] === undefined) {
alert('error');
} else {
$("#mydiv").html(msg["view"]);
$("#myDivContainingPagination").html(msg["paginationHtml"])
}
}