Fordelen med å bruke en fullstabel webapplikasjonsramme er at du ikke trenger å bekymre deg for de vanlige oppgavene som inngangshåndtering, form validering og lignende, da rammen allerede gir wrappers for disse funksjonene. Dermed kan du konsentrere deg om forretningslogikken i applikasjonen i stedet for å gjenoppfinne hjulet igjen og igjen.
I dag skal vi utforske et viktig bibliotek i CodeIgniter-rammeverket - paginasjonsbiblioteket.
La meg markere emnene som vi skal dekke i løpet av denne artikkelen:
I dette avsnittet går vi gjennom et eksempel som demonstrerer bruken av paginering i CodeIgniter. Det er den beste måten å forstå hvordan alt fungerer helt.
I vårt eksempel bygger vi en ganske enkel brukeroppføring der vi henter poster fra brukerens MySQL-tabell. For å kunne kjøre dette eksempelet, må du kontrollere at du har uid
og uname
felt i brukerbordet ditt.
Med det som er satt opp, er vi klare til å rulle.
Gå videre og opprett en kontrollerfil styringer / Paging.php
med følgende innhold.
last> bibliotek ( 'paginering'); // last URL-hjelperen $ this-> load-> hjelper ('url'); offentlige funksjonsindeks () // last db og modell $ this-> load-> database (); $ Dette-> last> modell ( 'Brukere'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ dette-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); hvis ($ total_records> 0) // få gjeldende side poster $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'Personsøker / indeks'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ Dette-> pagination-> initial ($ config); // bygge personsøkingskoblinger $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params); offentlig funksjon tilpasset () // last db og modell $ this-> load-> database (); $ Dette-> last> modell ( 'Brukere'); // init params $ params = array (); $ limit_per_page = 2; $ page = ($ this-> uri-> segment (3))? ($ dette-> uri-> segment (3) - 1): 0; $ total_records = $ this-> Users-> get_total (); hvis ($ total_records> 0) // få gjeldende side registrerer $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ side * $ limit_per_page); $ config ['base_url'] = base_url (). 'Paging / custom'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; // tilpasset personsøkings konfigurasjon $ config ['num_links'] = 2; $ config ['use_page_numbers'] = TRUE; $ config ['reuse_query_string'] = TRUE; $ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = ''; $ config ['first_link'] = 'Første side'; $ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_link'] = 'Siste side'; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_link'] = 'Neste side'; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_link'] = 'Forrige side'; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = ''; $ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = ''; $ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = ''; $ Dette-> pagination-> initial ($ config); // bygge personsøkingskoblinger $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Deretter trenger vi en modellfil modeller / Users.php
som henter poster fra brukertabellen.
db-> grense ($ grense, $ start); $ query = $ this-> db-> get ("users"); hvis ($ query-> num_rows ()> 0) foreach ($ query-> resultat () som $ rad) $ data [] = $ row; returnere $ data; returner falsk; offentlig funksjon get_total () return $ this-> db-> count_all ("users");
Til slutt, la oss lage en visningsfil på visninger / user_listing.php
som viser brukeroppføringen.
Søkeeksempel-Brukeroppføring Brukeroppføring
ID NAVN uid?> uname?> Ingen brukere funnet.
Nå, gå videre og få tilgang til vår egendefinerte side på http: // din-kode-antenner-side / personsøker / indeks, og du bør se brukeroppføringen sammen med paginasjonen! Så, det er det, vi har gjort det! Ikke bekymre deg, jeg vil ikke forlate deg så snart som vi begynner å dissekere hver del av koden nå.
Vi starter med modellfilen modeller / Users.php
som det blir noe kalt fra våre kontroller metoder. Det er to viktige metoder, get_current_page_records
og get_total
, at modellen vår implementerer for å bygge paginasjonslinkene.
La oss gå gjennom get_total
metode. Det er vant til å telle antall poster i brukertabellen.
offentlig funksjon get_total () return $ this-> db-> count_all ("users");
Deretter er det a get_current_page_records
metode.
offentlig funksjon get_current_page_records ($ grense, $ start) $ this-> db-> grense ($ grense, $ start); $ query = $ this-> db-> get ("users"); hvis ($ query-> num_rows ()> 0) foreach ($ query-> resultat () som $ rad) $ data [] = $ row; returnere $ data; returner falsk;
Det er to viktige argumenter som du bør merke i get_current_page_records
metode. Det første argumentet, $ grense
, brukes til å spesifisere antall poster som skal returneres under spørringen. Og det andre argumentet, $ start
, fungerer som startindeks for posten.
Så, som du kan se, gitt verdiene til $ start
og $ grense
vi kan hente poster etter side. Det er essensen av personsøking, og i mellomtiden har vi implementert den viktigste metoden i denne artikkelen!
Så det var vår modell - enkel og elegant!
Fortsett, la oss skifte oppmerksomhet til kontrollerfilen. Gå videre og ta tak i koden til konstruktormetoden.
offentlig funksjon __construct () foreldre :: __ construct (); // load Pagination Library $ this-> load-> bibliotek ('pagination'); // last URL-hjelperen $ this-> load-> hjelper ('url');
For å kunne bruke paginering i CodeIgniter, er det første du trenger å laste inn paginasjonsbiblioteket. Og vi kan gjøre det ved å bruke $ Dette-> last> bibliotek ( 'paginering')
.
Vi har også lastet URL-hjelperen slik at vi kan bruke globale hjelpefunksjoner levert av den hjelperen.
Nå er vi klare til å gå gjennom hjertet av vår kontroller-the index
metode.
offentlig funksjon indeks () // load db og modell $ this-> load-> database (); $ Dette-> last> modell ( 'Brukere'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ dette-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); hvis ($ total_records> 0) // få gjeldende side poster $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'Personsøker / indeks'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ Dette-> pagination-> initial ($ config); // bygge personsøkingskoblinger $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Til å begynne med, sørger vi for at databasen er lastet riktig. Etter det laster vi inn brukere
modell slik at vi kan bruke modellmetodene.
$ Dette-> last> database (); $ Dette-> last> modell ( 'Brukere');
Deretter initierer vi et par viktige variabler.
// init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ dette-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total ();
Variabelen $ limit_per_page
definerer grensen per side. Selvfølgelig kan du sette det som du ønsker; den er satt til 1 for øyeblikket for eksempel.
De $ START_INDEX
variabel inneholder startindeksen til MySQL-posten. Når CodeIgniter bygger pagineringskoblingene, legger den startsiden til siden som det tredje segmentet i nettadressen som standard. Du kan endre denne vanlige oppførselen, men det er noe vi reserverer for den siste delen av denne artikkelen, der vi diskuterer tilpasningsalternativer.
Til slutt kaller vi get_total
Metode for brukermodellen for å få totaloppføringene til brukertabellen, og den er tildelt til $ total_records
variabel.
Deretter henter vi postene til gjeldende side ved hjelp av get_current_page_records
metode.
// få gjeldende side poster $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index);
Før vi faktisk kan gå videre og bygge pagineringskoblinger, må vi initialisere den minste personsøkekonfigurasjonen ved hjelp av initial
metode for personsøkingsbiblioteket.
$ config ['base_url'] = base_url (). 'Personsøker / indeks'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ Dette-> pagination-> initial ($ config);
Og det er settet med minimumsparametere for å bygge paginasjonslinkene.
Til slutt bruker vi create_links
metode for å bygge pagineringskoblinger.
// bygge personsøkingskoblinger $ params ["links"] = $ this-> pagination-> create_links ();
Resten er bare formalitet å kalle vårt syn user_listing
og gjør utgangen! Kjør URL http: // din-kode-antenner-side / personsøker / indeks for å se brukeroppføringen sammen med paginasjonslinkene.
Så det er et veldig enkelt, men likevel nyttig paginering eksempel til din disposisjon som du kan utvide for å passe dine behov.
I neste avsnitt undersøker vi hvordan du kan tilpasse standardpaginasjonen når det gjelder utseende og funksjonalitet.
I denne delen undersøker vi de tilgjengelige alternativene du kan bruke hvis du ønsker å tilpasse standardpaginasjonslenkene.
Selv om CodeIgniter-personsøkingsbiblioteket automatisk oppdager den personsøkingsrelaterte parameteren fra nettadressen, kan du definere en egendefinert verdi hvis du har forskjellig nettadressemønster.
$ config ["uri_segment"] = 4;
De NUM_LINKS
alternativet lar deg definere antall sifret koblinger som vil bli vist før og etter det aktive sidenummeret i paginasjonslenkene.
$ config ['num_links'] = 2;
Når du får tilgang til personsøkings-URI-segmentet, er det en startindeks som standard. For eksempel, hvis du har ti poster per side, er personsøkings-URI-segmentet 20 for den tredje siden. I stedet, hvis du vil vise faktiske sidetall i personsøkelinkene, kan du angi use_page_numbers
til EKTE
.
$ config ['use_page_numbers'] = TRUE;
Selvfølgelig må du sørge for at du beregner riktig startindeks basert på sidetallet du henter fra nettadressen.
Oftere enn ikke, ender du opp i situasjonen der du vil bevare spørringsstrengparametere som ikke er relatert til paginering. Du kan bruke reuse_query_string
alternativ for å aktivere dette anlegget.
$ config ['reuse_query_string'] = TRUE;
Disse var noen få alternativer som du kan bruke til å endre standardpaginasjonsfunksjonaliteten. Deretter ser vi på et par andre alternativer som lar deg endre måten paginasjonslinks vises på.
Hvis du vil pakke pagineringskoden med en annen HTML-kode, kan du gjøre det ved hjelp av full_tag_open
og full_tag_close
opsjoner.
$ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = '';
Det kan være veldig nyttig hvis du ønsker å bruke tilpasset styling til paginasjonslinkene.
Hvis du vil endre teksten som vil bli vist for første, siste, neste og forrige kobling, kan du også gjøre det.
$ config ['first_link'] = 'Første side'; $ config ['last_link'] = 'Siste side'; $ config ['next_link'] = 'Neste side'; $ config ['prev_link'] = 'Forrige side';
Også, hvis du vil pakke de individuelle koblingene med en hvilken som helst HTML-kode, kan du gjøre det på samme måte som vi gjorde for å pakke hele personsøkekoden.
$ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = '';
Noen ganger vil du stillegge den aktive koblingen annerledes. Du kan gjøre det ved å bruke wrapper-koder som vist nedenfor.
$ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = '';
På samme måte, hvis du vil pakke sifferkoblinger med noe:
$ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = '';
Og det avsluttes historien om tilpasning. Faktisk kan du gå videre og se på tilpasningseksemplet på http: // your-code-igniter-site / paging / custom som allerede er inkludert i vår kontrollerfil!
Nå er du klar over konfigurasjonen som kreves for å sette opp en anstendig paginering med en hvilken som helst modelloppføring. Og mesteparten av tiden, du vil beholde det samme på hele nettstedet. Hva skal du gjøre for å oppnå det? Du kan bli fristet til å kopiere konfigurasjonskoden og lime den inn i hver handling som krever pagineringskonfigurasjonen.
Faktisk er det en bedre måte å håndtere dette scenariet på. Du kan opprette en personsøkings konfigurasjonsfil på application / konfig / pagination.php
og bruk $ config
variabel for å definere innstillingene dine.
'; $ config ['full_tag_close'] = '
Basert på det, den reviderte index
Handlingsmetode bør se slik ut:
offentlig funksjon indeks () // load db og modell $ this-> load-> database (); $ Dette-> last> modell ( 'Brukere'); // init params $ params = array (); $ start_index = ($ this-> uri-> segment (3))? $ dette-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); // last konfigurasjonsfil $ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('pagination'); $ innstillinger ['total_rows'] = $ this-> Brukere-> get_total (); $ innstillinger ['base_url'] = base_url (). 'Personsøker / konfig'; hvis ($ total_records> 0) // få gjeldende side registrerer $ params ["results"] = $ this-> Users-> get_current_page_records ($ settings ['per_page'], $ start_index); // bruk innstillingene for å initialisere biblioteket $ this-> pagination-> initialize ($ settings); // bygge personsøkingskoblinger $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Selvfølgelig, den TOTAL_ROWS
og base_url
variabler endres fra handling til handling, så du må sette dem eksplisitt i hver handling.
For å oppnå dette må du først laste inn pagineringskonfigurasjonen.
$ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('pagination');
Deretter kan du overstyre de handlingsspesifikke innstillingene.
$ innstillinger ['total_rows'] = $ this-> Brukere-> get_total (); $ innstillinger ['base_url'] = base_url (). 'Personsøker / konfig';
Og du er ferdig med det!
Så det var historien om pagineringskonfigurasjonen, og det avsluttes også denne artikkelen!
I dag gikk vi gjennom paginasjonsbiblioteket i CodeIgniter.
I den første delen av denne artikkelen demonstrerte jeg hvordan du kan bruke paginasjonsbiblioteket ved å gi et veldig enkelt, men nyttig eksempel.
Etter det diskuterte vi de tilpasningsalternativene som er tilgjengelige til disposisjon mens du setter opp paginasjonen.
Til slutt diskuterte vi pagineringskonfigurasjonen i den siste delen.
CodeIgniter er en kraftig PHP-plattform. Enten du bare har begynt eller du begynner med neste versjon, ikke glem å sjekke ut hva vi har tilgjengelig for deg, så vel.
Jeg vil gjerne vite tilbakemeldingen din i form av spørringer og kommentarer ved å bruke feedet under!