如何实现 Zend Framework 3 + Ajax 分页?
How can I Implement Zend Framework 3 + Ajax Pagination?
有谁知道如何使用 Zend Framework 3 (zf3) 实现 Ajax 分页?
我使用 Doctrine ORM 从数据库中检索数据。
当然可以。与普通的 GET 请求一样,只是您会动态响应,因为它涉及 xml http request
。
例如下面的indexAction
use Zend\View\Model\JsonModel;
// class, other use-statements, etc
public function indexAction()
{
$page = $this->params()->fromQuery('page', 1); // get page from GET, default page 1
/** @var QueryBuilder $qb */
$qb = $this->getObjectManager()->createQueryBuilder();
$qb->select('u')
->from(User::class, 'u')
->orderBy('u.createdAt', 'DESC');
$paginator = new Paginator(new OrmAdapter(new OrmPaginator($qb)));
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(25);
if ($this->getRequest()->isXmlHttpRequest()) {
return new JsonModel([
'paginator' => $paginator,
'queryParams' => $this->params()->fromQuery(),
]);
}
return [
'paginator' => $paginator,
'queryParams' => $this->params()->fromQuery(),
];
}
在这里,您通常会在标准 GET 请求的最底部 return
语句结束。在 ajax 类型请求的情况下,语句 $this->getRequest()->isXmlHttpRequest()
returns true
你知道它是通过 $.ajax / $.get / $.post
发送的(通常,除非本机JS 或类似的东西)。在这些情况下,您只想响应数据,而不是完全呈现的视图。这是当你 return JsonModel
.
为确保它按预期工作,您还必须在配置中启用 JsonViewStrategy
。您可能希望在您的 global.php
中启用它,而不仅仅是一个模块,如下所示,以便在任何地方启用它:
'view_manager' => [
//...
'strategies' => [
'ViewJsonStrategy',
],
],
那么,剩下要做的唯一事情就是 JavaScript 的客户端。比如确保更新分页、页面内容等。也许是 URI 锚点...
有谁知道如何使用 Zend Framework 3 (zf3) 实现 Ajax 分页?
我使用 Doctrine ORM 从数据库中检索数据。
当然可以。与普通的 GET 请求一样,只是您会动态响应,因为它涉及 xml http request
。
例如下面的indexAction
use Zend\View\Model\JsonModel;
// class, other use-statements, etc
public function indexAction()
{
$page = $this->params()->fromQuery('page', 1); // get page from GET, default page 1
/** @var QueryBuilder $qb */
$qb = $this->getObjectManager()->createQueryBuilder();
$qb->select('u')
->from(User::class, 'u')
->orderBy('u.createdAt', 'DESC');
$paginator = new Paginator(new OrmAdapter(new OrmPaginator($qb)));
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(25);
if ($this->getRequest()->isXmlHttpRequest()) {
return new JsonModel([
'paginator' => $paginator,
'queryParams' => $this->params()->fromQuery(),
]);
}
return [
'paginator' => $paginator,
'queryParams' => $this->params()->fromQuery(),
];
}
在这里,您通常会在标准 GET 请求的最底部 return
语句结束。在 ajax 类型请求的情况下,语句 $this->getRequest()->isXmlHttpRequest()
returns true
你知道它是通过 $.ajax / $.get / $.post
发送的(通常,除非本机JS 或类似的东西)。在这些情况下,您只想响应数据,而不是完全呈现的视图。这是当你 return JsonModel
.
为确保它按预期工作,您还必须在配置中启用 JsonViewStrategy
。您可能希望在您的 global.php
中启用它,而不仅仅是一个模块,如下所示,以便在任何地方启用它:
'view_manager' => [
//...
'strategies' => [
'ViewJsonStrategy',
],
],
那么,剩下要做的唯一事情就是 JavaScript 的客户端。比如确保更新分页、页面内容等。也许是 URI 锚点...