Paginator省略号上的CakePHP链接

Paginator省略号上的CakePHP链接,php,cakephp,pagination,ellipsis,Php,Cakephp,Pagination,Ellipsis,我想在分页器中的省略号上添加一个链接。当分页有两个省略号时,省略号必须有不同的链接 我的代码是: echo $this->paginator->numbers(array( 'tag' => 'li', 'separator' => '', 'currentTag' => 'a', 'currentClass' => 'active', 'modulus

我想在分页器中的省略号上添加一个链接。当分页有两个省略号时,省略号必须有不同的链接

我的代码是:

echo $this->paginator->numbers(array(
        'tag'          => 'li',
        'separator'    => '',
        'currentTag'   => 'a',
        'currentClass' => 'active',
        'modulus'      => 2,
        'first'        => 1,
        'last'         => 1,
        'ellipsis'     => "<li><a href='#' class='hellip'>...</a></li>"
    ));
echo$this->paginator->number(数组)(
'tag'=>'li',
'分隔符'=>'',
'currentTag'=>'a',
“currentClass”=>“活动”,
“模数”=>2,
“第一”=>1,
“last”=>1,
'省略号'=>“
  • ” ));
    因此,我想要创建的结果是:


    1…(link)6 7 8…(link)12

    简而言之,Paginator不支持您希望它做的事情,因此您唯一的选择是修改CakePHP源代码。具体地

    您需要做的第一件事是修改第720行的
    $defaults
    变量,并添加
    leftEllipsis
    righEllipsis
    字段。这意味着当我们不在
    $options
    变量中设置这些字段时,我们可以保持一致的行为

    $defaults = array('tag' => 'span', 'before' => null, 'after' => null,
    'model' => $this->defaultModel(), 'class' => null,'modulus' => '8',
    'separator' => ' | ', 'first' => null, 'last' => null, 'ellipsis' => '...',
    'currentClass' => 'current', 'currentTag' => null, 'leftEllipsis' => null,
    'rightEllipsis' => null);
    
    可能也应该取消设置我们的两个新字段(第735-738行):

    下一位有点棘手,因为能够指定其中一个省略号而不指定另一个省略号会很好,并且在没有任何一个省略号的情况下,可以回退到原始
    省略号
    字段设置的任何位置。但是开发人员已经使用了神奇的
    提取
    压缩
    函数以及
    第一(…)
    最后(…)
    函数,具体取决于
    $options
    参数中设置的某些字段

    在第756行之后插入以下代码,将
    $leftEllipsis
    默认设置为
    $ellipsis
    设置为的值:

    if(isempty($leftEllipsis)) {
      $leftEllipsis = $ellipsis;
    }
    
    接下来,我们需要修改作为
    $options
    参数传递给第758-761行的
    第一(…)
    函数的内容

    if ($offset < $start - 1) {
      $out .= $this->first($offset, compact('tag', 'separator', 'class') + array('ellipsis' => $leftEllipsis));
    } else {
      $out .= $this->first($offset, compact('tag', 'separator', 'class') + array('after' => $separator, 'ellipsis' => $leftEllipsis));
    }
    
    if($offset<$start-1){
    $out.=$this->first($offset,compact('tag','separator','class')+数组('ellipsis'=>$leftEllipsis));
    }否则{
    $out.=$this->first($offset,compact('tag','separator','class')+array('after'=>$separator',ellipsis'=>$leftEllipsis));
    }
    
    您也可以使用此模式攻击右侧省略号

    正确的方法是在GitHub上分叉项目,对代码库的版本进行更改,并创建一个pull请求,这样开发者就有机会将您的特性集成到主线中。这样每个人都可以从你的工作中受益


    祝你好运

    当你使用那个代码时发生了什么?它确实给了我两边的省略号,但我不能单独编辑它们。谢谢你的回答。你从哪里得到了偏移量变量?
    $offset
    是在我在回答开始时引用的原始源代码的第756行定义的。您可能希望检查您正在使用的CakePHP版本,因为我的答案是针对2.5.7版的
    if ($offset < $start - 1) {
      $out .= $this->first($offset, compact('tag', 'separator', 'class') + array('ellipsis' => $leftEllipsis));
    } else {
      $out .= $this->first($offset, compact('tag', 'separator', 'class') + array('after' => $separator, 'ellipsis' => $leftEllipsis));
    }