Cakephp Paginator自定义样式

时间:2014-01-23 07:17:58

标签: cakephp pagination cakephp-2.4

我正在使用Paginator组件和助手。

我的样式代码块如下所示。

    <!-- Pagination -->
    <div class="pagination">
        <ul class="pages">
            <li class="prev"><a href="#">&lt;</a></li>
            <li><a href="#" class="active">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li class="next"><a href="#">&gt;</a></li>
        </ul>
    </div>

当我尝试使用以下

创建分页时
<!-- Pagination -->
<div class="pagination">
    <ul class="pages">
        <?php if($this->Paginator->hasPrev()) echo $this->Paginator->prev('&lt;', array('tag' => 'li', 'escape' => false)); ?>
        <?php echo $this->Paginator->numbers(array('separator' => false, 'tag' => 'li', 'currentClass' => 'active')); ?>
        <?php if($this->Paginator->hasNext()) echo $this->Paginator->next('&gt;', array('tag' => 'li', 'escape' => false)); ?>
    </ul>
</div>

Active类被赋予li tag,但我的模板使用活跃类来a-href tag

有什么方法可以让蛋糕送到a tag

1 个答案:

答案 0 :(得分:1)

您必须为此扩展并覆盖PaginatorHelper::number()方法。

然后使用您的自定义分页器帮助应用程序,使用别名功能使其在您的视图中以$ this-&gt; Paginator的形式提供,以在所有视图中替换它。

public $helpers = array(
    'Paginator' => array(
        'className' => 'MyPaginator',
    )
);

不是覆盖整个方法,也可以这样做:

public function numbers($options = array()) {
    $numbers = parent::numbers($options);
    /* see explanation below */
    return $numbers;
}

说明:使用DOM或正则表达式查找,修改和替换<li class="active"><a></a></li>活动<li>元素并进行修改。这可能是更好的方法,因为如果核心行为发生变化,您只需要熟悉替换逻辑,而不必弄清楚代码中的更改并更新您的方法。 This bootstrap paginator helper does it this way