2015-01-16 7 views
22

Ich versuche, meine Laravel4-Anwendung auf Laravel 5 zu portieren. In der vorherigen Version konnte ich die folgende Methode zum Generieren von Paginierungs-URLs verwenden.Wie wird die Seitenzahl in Laravel 5 verwendet?

In Controller:

$this->data['pages']= Page::whereIn('area_id', $suburbs)->where('score','>','0')->orderBy('score','desc')->paginate(12); 

und nach mit der Ansicht der Datenanordnung teilen, könnte ich Benutzer

In Ansichten:

{{$pages->links()}} 

In Laravel 5 das tun Dies führt zu folgendem Fehler

ErrorException in AbstractPaginator.php line 445: 
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'links' 

nicht sicher, was ich hier vermisse, kann jemand helfen?

+3

Ich schlage vor zu warten, bis Laravel 5 stabil ist, weil es einige Bugs hat und der Basiscode sich ändern kann. –

+0

@ClaudioLudovicoPanetta Ich denke, es wird diesen Monat kommen :). wollte nur mit den Änderungen synchron sein. 4.2 für die Produktion verwenden. –

+1

Ihr Problem scheint eher ein Laravel-Problem als Ihres, ich werde versuchen, Sie Problem für eine Lösung zu replizieren, brb. –

Antwort

56

In Laravel 5 gibt es keine Methode "Links" können Sie versuchen, diese

{!! $pages->render() !!} 
+12

{!! $ pages-> render() !!} tat den Trick, die andere Syntax, in Laravel5 entkommt HTML. Danke –

+0

Endlich eine Lösung für eine einfache Seitenumbruch, nicht das neue "Erstellen Sie 5 PHP-Dateien, implementieren Sie eine Klasse und schreiben Sie 200 Zeilen Code". ENDLICH! Vielen Dank. – hfingler

+0

das funktioniert nicht. Gibt es etwas, das ich zuerst vorbereiten muss, bevor ich es benutze? – Muhaimin

-5

Hallo ist mein Code für Paginierung: Nutzung im Blick:
@include ('pagination.default', [ 'paginator' => $ users])

Views/Paginierung/default.blade.php

@if ($paginator->lastPage() > 1) 
    <ul class="pagination"> 
     <!-- si la pagina actual es distinto a 1 y hay mas de 5 hojas muestro el boton de 1era hoja --> 
     <!-- if actual page is not equals 1, and there is more than 5 pages then I show first page button --> 
     @if ($paginator->currentPage() != 1 && $paginator->lastPage() >= 5) 
      <li> 
       <a href="{{ $paginator->url($paginator->url(1)) }}" > 
        << 
       </a> 
      </li> 
     @endif 

     <!-- si la pagina actual es distinto a 1 muestra el boton de atras --> 
     @if($paginator->currentPage() != 1) 
      <li> 
       <a href="{{ $paginator->url($paginator->currentPage()-1) }}" > 
        < 
       </a> 
      </li> 
     @endif 

     <!-- dibuja las hojas... Tomando un rango de 5 hojas, siempre que puede muestra 2 hojas hacia atras y 2 hacia adelante --> 
     <!-- I draw the pages... I show 2 pages back and 2 pages forward --> 
     @for($i = max($paginator->currentPage()-2, 1); $i <= min(max($paginator->currentPage()-2, 1)+4,$paginator->lastPage()); $i++) 
       <li class="{{ ($paginator->currentPage() == $i) ? ' active' : '' }}"> 
        <a href="{{ $paginator->url($i) }}">{{ $i }}</a> 
       </li> 
     @endfor 

     <!-- si la pagina actual es distinto a la ultima muestra el boton de adelante --> 
     <!-- if actual page is not equal last page then I show the forward button--> 
     @if ($paginator->currentPage() != $paginator->lastPage()) 
      <li> 
       <a href="{{ $paginator->url($paginator->currentPage()+1) }}" > 
        > 
       </a> 
      </li> 
     @endif 

     <!-- si la pagina actual es distinto a la ultima y hay mas de 5 hojas muestra el boton de ultima hoja --> 
     <!-- if actual page is not equal last page, and there is more than 5 pages then I show last page button --> 
     @if ($paginator->currentPage() != $paginator->lastPage() && $paginator->lastPage() >= 5) 
      <li> 
       <a href="{{ $paginator->url($paginator->lastPage()) }}" > 
        >> 
       </a> 
      </li> 
     @endif 
    </ul> 
@endif 
+0

schauen, dass ich nicht gut kopieren ... der Code beginnt vor der grauen Fläche. – diego

+1

Sie können Ihren Code jederzeit bearbeiten (http://stackoverflow.com/posts/30744604/edit). – ZygD

4

In anderen Frameworks können Paginierung v sein sehr schmerzhaft. Laravel 5 macht es zum Kinderspiel. Denn es verwenden, müssen Sie zunächst eine Änderung in Ihrem Controller-Code, wo Sie Daten aus der Datenbank aufrufen:

public function index() 
{  
     $users = DB::table('books')->simplePaginate(5); 
     //using pagination method 
     return view('index', ['users' => $users]); 
} 

... nach, dass Sie diesen Code verwenden können: wird

<?php echo $users->render(); ?> 

dass Lass dir einfache Laravel 5-Schönheit geben.

-1
@if ($posts->lastPage() > 1) 
     <nav aria-label="Page navigation"> 
      <ul class="pagination"> 
       @if($posts->currentPage() != 1 && $posts->lastPage() >= 5) 
       <li> 
        <a href="{{ $posts->url($posts->url(1)) }}" aria-label="Previous"> 
         <span aria-hidden="true">First</span> 
        </a> 
       </li> 
       @endif 
       @if($posts->currentPage() != 1) 
       <li> 
        <a href="{{ $posts->url($posts->currentPage()-1) }}" aria-label="Previous"> 
         <span aria-hidden="true">&#x3C;</span> 
        </a> 
       </li> 
       @endif 
       @for($i = max($posts->currentPage()-2, 1); $i <= min(max($posts->currentPage()-2, 1)+4,$posts->lastPage()); $i++) 
       @if($posts->currentPage() == $i) 
       <li class="active"> 
       @else 
       <li> 
       @endif 
        <a href="{{ $posts->url($i) }}">{{ $i }}</a> 
       </li> 
       @endfor 
       @if ($posts->currentPage() != $posts->lastPage()) 
       <li> 
        <a href="{{ $posts->url($posts->currentPage()+1) }}" aria-label="Next"> 
         <span aria-hidden="true">&#x3E;</span> 
        </a> 
       </li> 
       @endif 
       @if ($posts->currentPage() != $posts->lastPage() && $posts->lastPage() >= 5) 
       <li> 
        <a href="{{ $posts->url($posts->lastPage()) }}" aria-label="Next"> 
         <span aria-hidden="true">Last</span> 
        </a> 
       </li> 
       @endif 
      </ul> 
     </nav> 
     @endif 
+0

Geben Sie eine Erklärung, die Antwort sollte zumindest ein wenig erklärt werden. –