- Paginare rezultate cu Eloquent
- Afisare rezultate paginate
- Metode ale instantei de paginare
- Personalizare link-uri pentru paginare

Framework-ul Laravel are un sistem de paginare integrat cu constructorul SQL si Eloquent, ce ofera un sistem de paginare al inregistrarilor din baza de date usor de folosit.

Paginare cu Constructor SQL

Modul cel mai simplu de paginare a inregistrarilor din baza de date este prin folosirea metodei paginate() la Constructorul SQL sau la interogare cu Eloquent.
Metoda paginate() preia un argument: numarul de elemente ce trebuie afisate pe pagina. Apoi, seteaza automat limita si offset-ul in functie de pagina curenta.
Pagina curenta cu rezultate paginate e detectata prin valoarea numarului din adresa HTTP, care e automat adaugat in link-urile de paginare.

- Exemplu de controller pentru afisare 20 elemente pe pagina:
<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class PagesController extends Controller{
  //Shows paginated results
  //@return a view
  public function index(){
    $pages = DB::table('table_name')->paginate(20);

    return view('pages.index', ['pages'=>$pages]);
  }
}
- Puteti apela paginate() dupa ce definiti si alti parametri pt. interogarea SQL, precum clauze where() sau DB:raw().
$pages = DB::table('table_name')->where('visits', '>', 100)->paginate(20);

$pages = DB::table('table_name')->select(DB::raw('*, DATE_FORMAT(dtreg, "%Y-%m-%d") as dtreg'))->paginate(20);

Paginare rezultate cu Eloquent

Puteti folosi metoda paginate() si cu Eloquent. Syntaxa e asemanatoare:
$users = App\User::paginate(20);

$users = User::where('votes', '>', 100)->paginate(20);

Afisare rezultate paginate

Rezultatele returnate de metoda paginate() pot fi parcurse ca si un array, (de exemplu cu foreach()).
Pentru a afisa link-urile de paginare care sunt create automat, folositi metoda $pages->links() (aici, $pages reprezinta obiectul returnat de metoda paginate()).
Puteti afisa rezultatele si link-urile paginarii in Blade template:
<div class="container">
@foreach($pages as $page)
  {{ $page->id }} - {{ $page->title }}
@endforeach
</div>

{{ $pages->links() }}
- Metoda $pages->links() returneaza o lista <ul> cu link-urile de paginare, compatibil cu framework-ul Bootstrap.

Metoda simplePaginate()

Daca vreti sa afisati doar link-uri "Next" si "Previous" in view (fara link-uri pt. fiecare numar de pagina), puteti folosi metoda simplePaginate(), care efectueaza o interogare mai rapida.
//with query builder
$users = DB::table('users')->simplePaginate(20);
//or
$users = DB::table('users')->where('votes', '>', 100)->simplePaginate(20);

//with Eloquent
$users = User::simplePaginate(20);
//or
$users = User::where('votes', '>', 100)->simplePaginate(20);

Personalizare adresa URI de paginare

Daca vreti ca paginatorul sa creeze link-uri de forma: //example.com/custom/url?page=N, folositi metoda withPath(), cu un sir "custom/url" ca argument.
Route::get('pages', function(){
  $pages = DB::table('table_name')->paginate(20);

  $pages->withPath('custom/url');
  //
});
- Apoi folositi {{ $pages->links() }} in template.

Ca sa adaugati siruri la fiecare link de paginare, aplicati metoda appends().
- De exemplu, pt. a adauga sirul "sort=votes" in fiecare link al paginarii, se poate folosi urmatorul cod:
{{ $pages->appends(['sort' => 'votes'])->links() }}
Daca doriti sa adaugati un "fragment hash", se foloseste metoda fragment().
- De exemplu, adaugam '#bip' la sfarsitul fiecarui link de paginare:
{{ $pages->fragment('bip')->links() }}

Metode ale instantei de paginare

Fiecare obiect paginator (returnat de metoda paginate()) contine metode pentru informatii despre paginare:

Returnare rezultate paginate ca JSON

Pentru a returna rezultatele date de metoda paginate() in format JSON, puteti folosi metoda toJson():
public function index(){
  $pages = DB::table('table_name')->paginate(15);

  return $pages->toJson();
}
Sirul JSON de la paginator va contine informatii precum: total, pagina_curenta, ultima_pagina, si altele.
Array-ul cu elementele paginate e in proprietatea "data" in obiectul JSON.
- Codul de mai sus va returna un JSON ca acesta:
{
  "total": 50,
  "per_page": 15,
  "current_page": 1,
  "last_page": 4,
  "next_page_url": "https://coursesweb.net?page=2",
  "prev_page_url": null,
  "from": 1,
  "to": 15,
  "data":[
    {
      // Result Object of first item
    },
    {
      // Result Object of second item
    }
  ]
}

Personalizare link-uri pentru paginare

Codul HTML returnat cu link-urile de paginare e compatibil cu framework-ul Bootstrap.
Ca sa creati propriul cod HTML pentru aceste link-uri, faceti un fisier view: resources/views/pagination/default.blade.php cu codul de paginare personalizat, si adaugati numele fisierului view ('pagination.default') ca argument la metoda links().
- De exemplu, acesta este template-ul implicit pentru paginare in Laravel:
@if($paginator->hasPages())
  <ul class="pagination">
    {{-- Previous Page Link --}}
    @if($paginator->onFirstPage())
      <li class="disabled"><span>&laquo;</span></li>
    @else
      <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
    @endif

    {{-- Pagination Elements --}}
    @foreach($elements as $element)
      {{-- "Three Dots" Separator --}}
      @if(is_string($element))
        <li class="disabled"><span>{{ $element }}</span></li>
      @endif

      {{-- Array Of Links --}}
      @if(is_array($element))
        @foreach($element as $page => $url)
          @if($page == $paginator->currentPage())
            <li class="active"><span>{{ $page }}</span></li>
          @else
            <li><a href="{{ $url }}">{{ $page }}</a></li>
          @endif
        @endforeach
      @endif
    @endforeach

    {{-- Next Page Link --}}
    @if($paginator->hasMorePages())
      <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">&raquo;</a></li>
    @else
      <li class="disabled"><span>&raquo;</span></li>
    @endif
  </ul>
@endif
- Creati un fisier php: resources/views/pagination/default.blade.php, si copiati codul de mai sus in acel fisier. Modifiati apoi continutul din "pagination/default.blade.php" dupa cum doriti.
- Apoi, afisati link-uri de paginare in template folosind acest cod:
{{$results->links('pagination.default')}}
De asemenea, puteti sa transmiteti date aditionale la view-ul de paginare:
{{$results->links('pagination.default', ['name'=>$value])}}
Un alt mod de a personaliza view-ul de paginare e prin exportare in directorul resources/views/vendor/ folosind comanda artisan vendor:publish in Command-Line-Interface:
php artisan vendor:publish --tag=laravel-pagination
Aceasta instructiune va plasa view-ul in directorul "resources/views/vendor/pagination/". Apoi, editati fisierul "default.blade.php" ca sa modificati codul HTML de paginare.
- Fisierul "simple-default.blade.php" e pentru link-urile de paginare returnate de metoda simplePaginate().


- Documentatie: Laravel - Database: Pagination

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag HTML5 defineste un text marcat, evidentiat?
<mark> <embed> <span>
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
Ce pseudo-clasa CSS defineste un stil la element cand mouse-ul e deasupra lui?
:focus :hover :active
a:hover {
  font-weight: bold;
  color: #00da01;
}
Clic pe functia ce returneaza un sir cu un numar rotunjit la x decimale.
toPrecision(x) toFixed(x) floor(x)
var num = 12.34567;
num = num.toFixed(2);
alert(num);       // 12.35
Indicati functia PHP care adauga continutul unui fisier intr-un array.
[) file() readfile()
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_export($arr);
Clic pe raspunsul potrivit la intrebarea: "What time is it?"
On the 7th of July 1996 It is a quarter to 5. Nice weather.
What time is it? It is a quarter to 5.
- Cat este ora? E 5 fara un sfert.
Indicati raspunsul potrivit la intrebarea: "¿Qué hora es?"
Hace buen tiempo. En el 7 de julio de 1996 Son las tres menos cuarto.
¿Qué hora es? Son las tres menos cuarto.
- Cat este ora? E 3 fara un sfert.
Paginare rezultate din Baza de date - Laravel tutorial

Last accessed pages

  1. Scriere scripturi PHP elementare (1576)
  2. Conditional IF in Limba Engleza - Fraze Conditionale (20736)
  3. Curs PHP MySQL, Tutoriale si Scripturi PHP (6659)
  4. Espanol Chistes - Glume, Bancuri (877)
  5. Sintaxa JavaScript (2435)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2144)
  2. Prezentul simplu si continuu - Present Tense Simple and Continuous (1480)
  3. Cursuri si Tutoriale: Spaniola, Engleza, HTML, CSS, Php-Mysql, JavaScript, Ajax (1072)
  4. Trecutul simplu si continuu - Past Tense Simple and Continuous (1025)
  5. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (981)