2014-01-23 108 views
4

我正在使用Paginator组件和助手。Cakephp 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> 

活动类是考虑到li tag创建分页,但我的模板使用活动类的a-href tag

有什么办法我可以让蛋糕给它a tag

+0

难道你不能改变你的CSS?使用遍历。 – Rikesh

+0

@Rikesh我正在使用一个模板,不想。如果我可以通过蛋糕完成 –

回答

1

您将不得不扩展并覆盖PaginatorHelper::number()方法。

然后使用您的自定义分页程序助手应用程序,通过使用别名功能使其在您的视图中以$ this-> 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

+0

该死的。我认为只需添加一个新课程更容易:P –