2014-01-23 158 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 –