获取Paginator的下一个和上一个CakePHP 2的网址

时间:2016-07-14 22:38:06

标签: cakephp pagination

我在CakePHP 2上使用了paginator。我已经将paginator从控制器发送到了视图。如果我调试paginator的next和prev方法,这就是我得到的:

debug($this->Paginator->next(null, null, array('class' => 'disabled')));
'<span class="next"><a href="/Project/Controller/method/127151/page:2" rel="next"></a></span>'

我需要在同一页面的框架上进行分页,因此当用户单击下一页或上一页时,不是所有页面都刷新,只是我用来显示数据的框架。我将使用Jquery的$ .post方法做到这一点,但是我需要在href中显示prev和next的URL,而不是所有的span和其他元素,例如 $ this-&gt; Html-&gt ; url提供

有人知道如何从分页器的上一个和下一个方法中检索URL吗?

3 个答案:

答案 0 :(得分:0)

我找到了一种使用PHP的DOM方法解决这个问题的方法:

    $htmlNext = $this->Paginator->next(null, null, array('class' => 'disabled')); //gets paginator next HTML tag
    $domNext = new DOMDocument();
    $domNext->loadHTML($htmlNext);
    $tagsNext = $domNext->getElementsByTagName('a');
    $theLinkNext = "";
    foreach ($tagsNext as $tag) 
    {
        $theLinkNext = $tag->getAttribute('href');
    }

现在在$ theLinkNext变量上你有下一页的URL,然后你只需要调用Jquery的$ .post并使用URL来获取数据:

var loadNotesPage = "<?php echo $theLinkNext ?>";
$.post(loadNotesPage, function (data) {
    $('#loading-notes').html(data);
});

答案 1 :(得分:0)

$this->Paginator->url()默认情况下会返回完整的分页URL字符串,以用于非标准上下文(即JavaScript)。您可以查看Cakephp 2.x文档here,希望对您有所帮助

答案 2 :(得分:0)

您可以尝试这种方式

<!DOCTYPE html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  </head>
  <body>
    <select data-src='test.php' data-id='id' data-name='name'></select>
  </body>
</html>
<html>

<script>
$('select[data-src]').each(function() {
  var $select = $(this);
  $select.append('<option></option>');

  $.ajax({
    url: $select.attr('data-src'),
    data: {'v0': 'Alligator', 'v1': 'Crocodile'}
  }).then(function(options) {
    options.map(function(option) {
      var $option = $('<option>');
      $option
        .val (option[$select.attr('data-id')])
        .text(option[$select.attr('data-name')]);
      $select.append($option);
    });
  });
});
</script>