2016-01-21 2 views
0

У меня есть следующий код в Laravel для создания пагинацииLaravel цели 5,2 пагинации _blank

Route::get('hede', function(){ 
    $paginator = new Illuminate\Pagination\LengthAwarePaginator(
     range(1,500), //a fake range of total items, you can use range(1, count($collection)) 
     500, //count as in 1st parameter 
     20, //items per page 
     \Illuminate\Pagination\Paginator::resolveCurrentPage(), //resolve the path 
     ['path' => \Illuminate\Pagination\Paginator::resolveCurrentPath()] 
    ); 

    return $paginator->render(); 
}) 

Я не могу найти, как установить цель для ссылки, мне нужна возможность переключения между _blank, _parent и _self.

ответ

2

Следуя совету Марка Дэвидсона, я быстро пробежал по нему, чтобы понять, как это работает.

class CustomPresenter extends \Illuminate\Pagination\BootstrapThreePresenter 
{ 
    protected $target; 

    /** 
    * Create a new Bootstrap presenter instance. 
    * 
    * @param \Illuminate\Contracts\Pagination\Paginator $paginator 
    * @param \Illuminate\Pagination\UrlWindow|null $window 
    * @param string $target 
    */ 
    public function __construct(\Illuminate\Contracts\Pagination\Paginator $paginator, \Illuminate\Pagination\UrlWindow $window = null, $target = '_self') 
    { 
     parent::__construct($paginator, $window); 
     $this->target = $target; 
    } 

    /** 
    * 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.' target="'.$this->target.'">'.$page.'</a></li>'; 
    } 
} 

Чтобы использовать это, я просто сделать следующую ...

$items = Lotpro\User::all(); 
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($items, $items->count(), 10, 0); 
$presenter = new CustomPresenter($paginator, null, '_self'); 
echo $presenter->render(); 

Ссылка должна получить целевой атрибут того, что вы пройти в 3-й параметр конструктора.

+1

Это добавляет его к URL-адресу и не создает атрибут в ссылке. – user2075215

+1

Простите, что должно было уделить больше внимания, я обновил свой ответ, используя совет Марка Дэвидсона. – user3158900

3

Что вам нужно сделать, так это создать пользовательский презентатор для визуализации разбиения на страницы.

Если вы заказываете эту статью http://laravelista.com/laravel-custom-pagination-presenter/, она должна помочь с тем, что вам нужно сделать.

По существу, вы создадите презентатора, и вы захотите переопределить getPageLinkWrapper, чтобы ввести использование целевого параметра в теге ссылки.