シンプル・ペジネーション
$users = DB::table('users')->simplePaginate(15);
Viewで表示
{!! $users->render() !!}
結果以下のようなHTMLが出力されます。
<ul class="pager"> <li class="disabled"><span>«</span></li> <li><a href="http://xxx.jp/yyy/?page=2" rel="next">»</a></li> </ul>
「«」「»」を「前へ」「次へ」に変えたいですが、
簡単な方法ありますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Laravel5.3以降であれば、下記の方法で簡単に変更が出来ました。
①php artisan vendor:publish
で上書用のviewを自動生成
②\views\vendor\pagination\simple-default.blade.phpが下記の通り生成されるので表示文字を変更
(表示したい文字に変更)
html
1@if ($paginator->hasPages()) 2 <ul class="pagination"> 3 {{-- Previous Page Link --}} 4 @if ($paginator->onFirstPage()) 5 <li class="disabled"><span>«</span></li> 6 @else 7 <!--<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>--> 8 <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">前へ</a></li> 9 @endif 10 11 {{-- Next Page Link --}} 12 @if ($paginator->hasMorePages()) 13 <!--<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>--> 14 <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">次へ</a></li> 15 @else 16 <li class="disabled"><span>»</span></li> 17 @endif 18 </ul> 19@endif
###追記(Laravel5.0)※未検証
Laravel 5 で Paginator->render() する時、自前のテンプレートを用いる方法
php
1<?php namespace App\Presenters; 2 3use Illuminate\Pagination\BootstrapThreePresenter; 4 5class CustomPresenter extends BootstrapThreePresenter { 6 7 public function render() 8 { 9 if( ! $this->hasPages()) 10 return ''; 11 12 return sprintf( 13 '<div class="pagination">%s %s %s</div>', 14 $this->getPreviousButton(), 15 $this->getLinks(), 16 $this->getNextButton() 17 ); 18 } 19 20 /** 21 * Get HTML wrapper for an available page link. 22 * 23 * @param string $url 24 * @param int $page 25 * @param string|null $rel 26 * @return string 27 */ 28 protected function getAvailablePageWrapper($url, $page, $rel = null) 29 { 30 $rel = is_null($rel) ? '' : ' rel="'.$rel.'"'; 31 32 return '<a href="'.htmlentities($url).'"'.$rel.'>'.$page.'</a>'; 33 } 34 35 /** 36 * Get HTML wrapper for disabled text. 37 * 38 * @param string $text 39 * @return string 40 */ 41 protected function getDisabledTextWrapper($text) 42 { 43 return '<span>'.$text.'</span>'; 44 } 45 46 /** 47 * Get HTML wrapper for active text. 48 * 49 * @param string $text 50 * @return string 51 */ 52 protected function getActivePageWrapper($text) 53 { 54 return '<span>['.$text.']</span>'; 55 } 56}
他にはこれ等も参考になると思います。
Laravel5のページナビをカスタマイズする
php
1<?php 2 3namespace App\Http\Pagination; 4 5use Illuminate\Support\HtmlString; 6use Illuminate\Contracts\Pagination\Paginator as PaginatorContract; 7use Illuminate\Contracts\Pagination\Presenter as PresenterContract; 8use App\Http\Pagination\UrlWindowPresenterTrait; 9use Illuminate\Pagination\BootstrapThreeNextPreviousButtonRendererTrait; 10use Illuminate\Pagination\UrlWindow; 11 12class FrontPaginationPresenter implements PresenterContract 13{ 14 15 use BootstrapThreeNextPreviousButtonRendererTrait, 16 UrlWindowPresenterTrait; 17 18 protected $paginator; 19 protected $window; 20 21 public function __construct(PaginatorContract $paginator, UrlWindow $window = null) 22 { 23 $this->paginator = $paginator; 24 $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get(); 25 } 26 27 public function hasPages() 28 { 29 return $this->paginator->hasPages(); 30 } 31 32 // レンダリング 33 public function render() 34 { 35 if ($this->hasPages()) { 36 return new HtmlString(sprintf( 37 '<ul class="pagination">%s %s %s %s %s</ul>', $this->getFirstButton(), $this->getPreviousButton(), $this->getLinks(), $this->getNextButton(), $this->getLastButton() 38 )); 39 } 40 41 return ''; 42 } 43 44 // 通常のタグ 45 protected function getAvailablePageWrapper($url, $page, $rel = null) 46 { 47 $rel = is_null($rel) ? '' : ' rel="' . $rel . '"'; 48 49 return '<li><a href="' . htmlentities($url) . '"' . $rel . '>' . $page . '</a></li>'; 50 } 51 52 // リンク無効な文字列のタグ 53 protected function getDisabledTextWrapper($text) 54 { 55 return '<li class="disabled"><span>' . $text . '</span></li>'; 56 } 57 58 // 現在のページ 59 protected function getActivePageWrapper($text) 60 { 61 return '<li class="active"><span>' . $text . '</span></li>'; 62 } 63 64 protected function getDots() 65 { 66 return $this->getDisabledTextWrapper('...'); 67 } 68}
php
1<?php 2namespace App\Http\Pagination; 3 4trait UrlWindowPresenterTrait 5{ 6 use \Illuminate\Pagination\UrlWindowPresenterTrait; 7 8 protected function getFirstButton($text = 'First') 9 { 10 if ($this->paginator->currentPage() <= 1) { 11 return $this->getDisabledTextWrapper($text); 12 } 13 14 return $this->getPageLinkWrapper( 15 $this->paginator->url(1), $text, 'first' 16 ); 17 } 18 19 protected function getLastButton($text = 'Last') 20 { 21 if (!$this->paginator->hasMorePages()) { 22 return $this->getDisabledTextWrapper($text); 23 } 24 25 return $this->getPageLinkWrapper( 26 $this->paginator->url($this->lastPage()), $text, 'last' 27 ); 28 } 29}
投稿2016/12/29 00:47
編集2017/01/04 00:54総合スコア3027
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/30 06:19
2017/01/04 00:54
2017/01/04 14:45