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));
}