中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

詳解WordPress中添加友情鏈接的方法
來源:易賢網(wǎng) 閱讀:1609 次 日期:2016-08-19 15:17:18
溫馨提示:易賢網(wǎng)小編為您整理了“詳解WordPress中添加友情鏈接的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了PHP框架Laravel5.1插件Pagination實(shí)現(xiàn)自定義分頁(yè)的相關(guān)資料,需要的朋友可以參考下

Laravel 的分頁(yè)很方便,其實(shí)擴(kuò)展起來也挺容易的,下面就來做個(gè)示例,擴(kuò)展一下 paginate() 和 simplePaginate() 方法,來實(shí)現(xiàn)我們自定義分頁(yè)樣式,比如顯示 "上一頁(yè)" 和 "下一頁(yè)" ,而不是 "《" 和 "》" ,當(dāng)然擴(kuò)展的方法掌握了你就可以肆無忌憚的擴(kuò)展一個(gè)你想要的分頁(yè)了,比如跳轉(zhuǎn)到某一頁(yè),分頁(yè)顯示一共多少記錄,當(dāng)前顯示的記錄范圍等等巴拉巴拉的。。。

5.1和5.2應(yīng)該是同樣的方法,我這里用的是5.2的版本。文檔告訴我們 Paginator 對(duì)應(yīng)于查詢語(yǔ)句構(gòu)造器和 Eloquent 的  simplePaginate 方法,而  LengthAwarePaginator 則等同于  paginate 方法。那我們還是來看下源碼,具體這個(gè)  paginate 是如何實(shí)現(xiàn) render() 的,

Illuminate/Pagination/LengthAwarePaginator.php

<?php

namespace Illuminate\Pagination;

......

class LengthAwarePaginator extends AbstractPaginator implements Arrayable, ArrayAccess, Countable, IteratorAggregate, JsonSerializable, Jsonable, LengthAwarePaginatorContract 

{

......

  public function render(Presenter $presenter = null)

  {

    if (is_null($presenter) && static::$presenterResolver) {

      $presenter = call_user_func(static::$presenterResolver, $this);

    }

    $presenter = $presenter ?: new BootstrapThreePresenter($this);

    return $presenter->render();

  }

......

}

render() 中傳入的是一個(gè) Presenter 的實(shí)例,并調(diào)用這個(gè)實(shí)例化的 render 方法來實(shí)現(xiàn)分頁(yè)的顯示的。如果沒有則調(diào)用 BootstrapThreePresenter 中 render() 的,來看看 BootstrapThreePresenter 是干嘛的

Illuminate/Pagination/BootstrapThreePresenter.php

<?php

namespace Illuminate\Pagination;

use Illuminate\Support\HtmlString; 

use Illuminate\Contracts\Pagination\Paginator as PaginatorContract; 

use Illuminate\Contracts\Pagination\Presenter as PresenterContract;

class BootstrapThreePresenter implements PresenterContract 

{

  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait;

  /**

   * The paginator implementation.

   *

   * @var \Illuminate\Contracts\Pagination\Paginator

   */

  protected $paginator;

  /**

   * The URL window data structure.

   *

   * @var array

   */

  protected $window;

  /**

   * Create a new Bootstrap presenter instance.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @param \Illuminate\Pagination\UrlWindow|null $window

   * @return void

   */

  public function __construct(PaginatorContract $paginator, UrlWindow $window = null)

  {

    $this->paginator = $paginator;

    $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get();

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages();

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pagination">%s %s %s</ul>',

        $this->getPreviousButton(),

        $this->getLinks(),

        $this->getNextButton()

      ));

    }

    return '';

  }

......

}

這里可以看到 BootstrapThreePresenter 實(shí)現(xiàn)了 PresenterContract 的接口, render() 才是分頁(yè)顯示的真正實(shí)現(xiàn),構(gòu)造方法中的第一個(gè)參數(shù) PaginatorContract 其實(shí)就是一個(gè) Paginator 我們繼續(xù)看下 PresenterContract 也就是 Presenter 接口中定義了什么方法需要實(shí)現(xiàn)

illuminate/contracts/Pagination/Presenter.php

<?php

namespace Illuminate\Contracts\Pagination;

interface Presenter 

{

  /**

   * Render the given paginator.

   *

   * @return \Illuminate\Contracts\Support\Htmlable|string

   */

  public function render();

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages();

}

其中定義了 render 和 hasPages 方法需要實(shí)現(xiàn)

好了,那我們現(xiàn)在已經(jīng)很清晰了,我們要自定義分頁(yè)的顯示,那么就要寫一個(gè)我們自己的 Presenter 來實(shí)現(xiàn)接口中的 render() 和 hasPages() 就可以了。

首先就來簡(jiǎn)單的實(shí)現(xiàn)一個(gè)paginate(),顯示出來"上一頁(yè)"和"下一頁(yè)",中間是分頁(yè)數(shù)字的例子。

新建文件如下(個(gè)人習(xí)慣)

app/Foundations/Pagination/CustomerPresenter.php

<?php 

namespace App\Foundations\Pagination;

use Illuminate\Contracts\Pagination\Presenter as PresenterContract; 

use Illuminate\Contracts\Pagination\LengthAwarePaginator as PaginatorContract; 

use Illuminate\Pagination\UrlWindow; 

use Illuminate\Support\HtmlString; 

use Illuminate\Pagination\BootstrapThreeNextPreviousButtonRendererTrait; 

use Illuminate\Pagination\UrlWindowPresenterTrait;

class CustomerPresenter implements PresenterContract 

{

  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait;

  protected $paginator;

  protected $window;

  /**

   * Create a new Bootstrap presenter instance.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @param \Illuminate\Pagination\UrlWindow|null $window

   * @return void

   */

  public function __construct(PaginatorContract $paginator, UrlWindow $window = null)

  {

    $this->paginator = $paginator;

    $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get();

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages();

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pagination">%s %s %s</ul>',

        $this->getPreviousButton('上一頁(yè)'),//具體實(shí)現(xiàn)可以查看該方法

        $this->getLinks(),

        $this->getNextButton('下一頁(yè)')//具體實(shí)現(xiàn)可以查看該方法

      ));

    }

    return '';

  }

  /**

   * Get HTML wrapper for an available page link.

   *

   * @param string $url

   * @param int $page

   * @param string|null $rel

   * @return string

   */

  protected function getAvailablePageWrapper($url, $page, $rel = null)

  {

    $rel = is_null($rel) ? '' : ' rel="' . $rel . '"';

    return '<li><a href="' . htmlentities($url) . '"' . $rel . '>' . $page . '</a></li>';

  }

  /**

   * Get HTML wrapper for disabled text.

   *

   * @param string $text

   * @return string

   */

  protected function getDisabledTextWrapper($text)

  {

    return '<li class="disabled hide"><span>' . $text . '</span></li>';

  }

  /**

   * Get HTML wrapper for active text.

   *

   * @param string $text

   * @return string

   */

  protected function getActivePageWrapper($text)

  {

    return '<li class="active"><span>' . $text . '</span></li>';

  }

  /**

   * Get a pagination "dot" element.

   *

   * @return string

   */

  protected function getDots()

  {

    return $this->getDisabledTextWrapper('...');

  }

  /**

   * Get the current page from the paginator.

   *

   * @return int

   */

  protected function currentPage()

  {

    return $this->paginator->currentPage();

  }

  /**

   * Get the last page from the paginator.

   *

   * @return int

   */

  protected function lastPage()

  {

    return $this->paginator->lastPage();

  }

}

就這么簡(jiǎn)單,主要就是 render() 方法,如果項(xiàng)目中需要修改分頁(yè)樣式,或者添加分頁(yè)跳轉(zhuǎn)之類的需求只要重寫其中的各項(xiàng)顯示的方法中的html元素就可以了,很靈活,在blade模板中也需要修該,比如我們的 Paginator 叫 $users ,默認(rèn)的分頁(yè)顯示是這樣的:

{!! $users->render() !!}

修改成我們自定義后的分頁(yè)顯示:

{!! with(new \App\Foundations\Pagination\CustomerPresenter($categories))->render() !!}

好了,這樣在頁(yè)面應(yīng)該就可以看到分頁(yè)鏈接中含有 "上一頁(yè)"和"下一頁(yè)"加數(shù)字的樣式了。

那么如果擴(kuò)展simplePaginate?其實(shí)很簡(jiǎn)單,只要繼承剛才的 CustomerPresenter ,實(shí)現(xiàn) hasPages 和 render ,至于為什么可以按照我上面查看源碼的方式看一下就知道了,比如我們改成"上一篇"和"下一篇"

新建App\Foundations\Pagination\CustomerSimplePresenter.php

<?php 

namespace App\Foundations\Pagination;

use Illuminate\Support\HtmlString; 

use Illuminate\Contracts\Pagination\Paginator as PaginatorContract;

class CustomerSimplePresenter extends CustomerPresenter 

{

  /**

   * Create a simple Bootstrap 3 presenter.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @return void

   */

  public function __construct(PaginatorContract $paginator)

  {

    $this->paginator = $paginator;

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages() && count($this->paginator->items()) > 0;

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pager">%s %s</ul>',

        $this->getPreviousButton('上一篇'),

        $this->getNextButton('下一篇')

      ));

    }

    return '';

  }

}

分頁(yè)顯示:

{!! with(new \App\Foundations\Pagination\CustomerSimplePresenter($categories))->render() !!}

方法就是這個(gè)方法,具體修改按照自己需求重寫其中對(duì)應(yīng)的顯示html元素的方法就可以了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)PHP程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:詳解WordPress中添加友情鏈接的方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美中文在线观看| 久久男女视频| 国产精品人人做人人爽人人添| 欧美成人免费在线视频| 在线观看日韩www视频免费| 欧美 日韩 国产在线| 一区二区三区四区五区精品视频| 国产精品美女久久福利网站| 欧美a级在线| 久久九九国产精品怡红院| 欧美www视频| 久久久国产精彩视频美女艺术照福利| 亚洲高清网站| 国产日韩精品一区二区三区| 欧美激情精品久久久久久蜜臀| 亚洲自拍高清| 一本色道久久综合狠狠躁的推荐| 一区二区三区自拍| 国产精品一卡| 欧美日韩一区二区三区免费| 欧美69视频| 黑人极品videos精品欧美裸| 国产精品视频免费一区| 欧美国产亚洲另类动漫| 久热精品视频在线观看| 欧美在线欧美在线| 欧美夜福利tv在线| 欧美在线网站| 麻豆av一区二区三区| 欧美91大片| 欧美日韩国产色视频| 免费高清在线视频一区·| 免费成人av在线| 免费久久99精品国产| 欧美日韩精品一区二区| 国产精品一区二区男女羞羞无遮挡| 欧美午夜性色大片在线观看| 欧美日韩一区成人| 国产精品高清网站| 国产日韩亚洲欧美综合| 黄色亚洲精品| 99精品热6080yy久久 | 亚洲在线视频观看| 久久av二区| 欧美日韩亚洲一区二区| 欧美午夜精品理论片a级按摩| 国产精品久久久久久久第一福利| 国产一区欧美| 99视频超级精品| 欧美一区中文字幕| 欧美电影在线观看| 国产精品久久久久久久免费软件| 国产午夜精品麻豆| 一区二区激情小说| 老司机免费视频久久| 浪潮色综合久久天堂| 欧美xxxx在线观看| 国产一区二区三区在线观看视频| 国产精品久久久久av| 国产午夜精品麻豆| 亚洲午夜一级| 欧美激情麻豆| 在线观看中文字幕亚洲| 亚洲欧美www| 欧美日韩大陆在线| 一区精品久久| 一区二区三区四区精品| 午夜精品久久一牛影视| 亚洲欧美日韩精品久久久久| 欧美日韩一区二区精品| 久久精品av麻豆的观看方式| 久久夜色精品国产| 在线亚洲一区观看| 日韩午夜三级在线| 亚洲精品美女| 欧美午夜不卡视频| 久久久在线视频| 黄色成人在线| 亚洲欧美激情诱惑| 在线成人免费观看| 欧美xx69| 亚洲午夜精品久久久久久浪潮| 国产一区二区成人久久免费影院| 久久久久久久999| 另类亚洲自拍| 久久福利精品| 麻豆精品91| 日韩一区二区福利| 国产精品网站在线观看| 欧美日韩成人免费| 久久精品国产久精国产一老狼 | 亚洲精品女人| 欧美二区在线| 亚洲午夜一区二区| 国产一区欧美| 亚洲国产精品久久久久| 欧美日韩日本国产亚洲在线| 午夜精品福利在线| 亚洲精品视频免费在线观看| 在线观看av不卡| 国产一区视频网站| 欧美在线免费看| 久久综合给合久久狠狠色| 在线观看欧美精品| 狠狠色噜噜狠狠色综合久 | 久久精品观看| 国产精品视频一区二区三区| 99天天综合性| 久久久久久9999| 亚洲一区二区高清视频| 亚洲欧洲日产国码二区| 麻豆成人综合网| 先锋资源久久| 99国产精品久久久久久久久久| 亚洲国产精品一区在线观看不卡| 极品少妇一区二区三区| 久久精品一区二区国产| 日韩午夜在线| 国产精品99久久久久久人| 欧美日韩精品免费观看视频| 亚洲国产精品激情在线观看| 国产精品xxx在线观看www| 欧美福利一区| 欧美激情视频一区二区三区不卡| 欧美一区二区高清在线观看| a4yy欧美一区二区三区| 国产一区二区剧情av在线| 久久综合网色—综合色88| 99伊人成综合| 亚洲国产专区| 136国产福利精品导航网址应用| 欧美二区在线| 久久成人av少妇免费| 久久看片网站| 毛片基地黄久久久久久天堂| 亚洲欧美在线网| 免费视频一区| 欧美日韩亚洲成人| 国产婷婷色一区二区三区在线 | 一区二区三区 在线观看视| 宅男噜噜噜66国产日韩在线观看| 亚洲一级黄色av| 久久精品人人做人人综合| 欧美成人国产va精品日本一级| 欧美四级剧情无删版影片| 国产日本欧洲亚洲| 亚洲高清网站| 欧美一级理论性理论a| 免费在线欧美黄色| 国产亚洲精品高潮| 国产精品久久久久久久久久妞妞| 欧美性开放视频| 亚洲精品久久久蜜桃| 久久国产精品久久w女人spa| 欧美精品粉嫩高潮一区二区| 国产亚洲精品久久久久动| 中文av字幕一区| 另类亚洲自拍| 国内精品视频一区| 午夜精品久久久久久久男人的天堂| 免费亚洲电影在线| 狠狠入ady亚洲精品| 亚洲欧美日韩国产中文| 欧美另类一区| 亚洲国产一区二区三区高清| 国产一区二区三区的电影 | 欧美激情一区二区三区在线| 国产日产亚洲精品| 99av国产精品欲麻豆| 欧美影院视频| 欧美成人在线网站| 日韩一二在线观看| 欧美激情一区二区三区| 亚洲免费高清视频| 国产精品久久久久久久久久直播 | 欧美精品在线一区| 亚洲精品在线看| 欧美激情精品久久久六区热门 | 欧美一区二区三区啪啪 | 亚洲激情网址| 欧美精品日韩综合在线| 亚洲激情啪啪| 国产精品入口夜色视频大尺度| 欧美一区亚洲二区| 蜜臀a∨国产成人精品| av成人免费| 欧美另类人妖| 欧美在线资源| 国产精品美女久久久久aⅴ国产馆| 性做久久久久久免费观看欧美 | 亚洲少妇最新在线视频| 国产亚洲欧美一区二区| 久久久久一区二区三区| 亚洲美女淫视频| 国产精品午夜久久| 欧美破处大片在线视频| 一本一本a久久| 亚洲人成网站色ww在线| 国产亚洲精品aa午夜观看| 理论片一区二区在线|