CakePHP: Uporaba pager-ja

Tokrat bom opisal eno preprosto uporabo pagerja v CakePHP aplikaciji. Primer bom navedel za novice. Recimo da hočemo na eni strani po 5 novic razvrščenih po datumu.

Na svežo si skopiramo nekam najnovejšo različico CakePHP frameworka. Jaz sem si dal zadevo v direktorij “cakephp”. Kam boste dali sami je vaša odločitev.

V app/config/core.php spremenimo vrednost konstante CAKE_SESSION_STRING v nek drug poljuben random string. To nam sistem tudi napiše. Imeti morate tudi pisljiv app/tmp direktorij.

Gremo k bistvu. Naredimo bazo. V bazi naredimo tabelo news z naslednjimi polji:

  1. span style="color: #ff0000;">`news` (
  2. `id``title``flash``content``hidden``created``id``content` (`content``flash` (`flash`

Lahko bi uporabil samo id, title, content, created polja vendar sem zaradi nadlanjih zapisov tabelo malce razširil da se nebo treba takrat matrati 🙂

Sedaj preimenujemo app/config/database.php.default v database.php. V database.php nastavite vse potrebne podatke za povezavo do vaše baze.
Primer:

  1. span style="color: #ff0000;">'driver' => 'mysql',
  2. 'persistent''host' => 'localhost',
  3. 'login' => 'username_za_dostop_do_vase_baze',
  4. 'password' => 'geslo',
  5. 'database' => 'ime_vase_baze',
  6. 'prefix' => ''
  7. );
  8. }

F5 in sistem bi vam moral izpisati da se je uspešno povezal do vaše baze => “Your database configuration file is present.”. V primeru napake vam bo to sistem lepo povedal 🙂

Naredimo file app/app_controller.php. In dodamo vanj naslednje:

  1. span style="color: #ff0000;">'.tpl'

Kaj nam app_controller.php omogoča ? Omogoča nam da v aplikaciji nastavimo neke nastavitve na neko vrednost ki jo hočemo da je veljavna povsod in ne samo v določenem kontrolerju. S spremenljivko $ext nastavimo končnico za template “.tpl”. Po defaultu uporablja sistem .ctp. Ta korak vam ni treba narediti vendar morate template ustvariti z .ctp končnico namesto .tpl.

Naredimo kontroler. app/controllers/news_controller.php
V news_controller.php file damo naslednje:

  1. span style="color: #ff0000;">'News''News'

Naredimo model models/news.php. Dodamo naslednje:

  1. span style="color: #ff0000;">'News'

Naredimo tepmlate za prvo stran pri novicah app/views/news/index.tpl. Sedaj gremo na http://vas.host.name/direktorij_kjer_je_cakephp/news/. Če je kaj pravice na svetu potem nebi smeli dobiti nobenega error-ja.

Dodajmo nekaj vnosov v tabelo news.

  1. span style="color: #ff0000;">`news`'Novica 1', 'Uvod za novico 1', 'Glavno besedilo za novico 1', 0, '2007-08-04 19:31:53'`news`'Novica 2', 'Uvod za novico 1', 'Glavno besedilo za novico 2', 0, '2007-08-04 19:31:53'`news`'Novica 3', 'Uvod za novico 3', 'Glavni opis za novico 3', 0, '2007-08-04 19:32:52'`news`'Novica 4', 'Uvod za novico 4', 'Glavni opis za novico 4', 0, '2007-08-01 19:32:52'`news`'Novica 5', 'Uvod za novico 5', 'Glavni opis za novico 5', 0, '2007-08-01 19:33:53'`news`'Novica 6', 'Uvod za novico 6', 'Glavni opis za novico 6', 0, '2007-08-04 19:33:53'`news`'Novica 7', 'Uvod za novico 7', 'Glavno besedilo za novico 7', 0, '2007-07-04 19:31:53'`news`'Novica 8', 'Uvod za novico 8', 'Glavno besedilo za novico 8', 0, '2007-08-04 19:31:53'`news`'Novica 9', 'Uvod za novico 9', 'Glavni opis za novico 9', 0, '2007-08-04 19:32:52'`news`'Novica 10', 'Uvod za novico 10', 'Glavni opis za novico 10', 0, '2007-06-04 19:32:52'`news`'Novica 11', 'Uvod za novico 11', 'Glavni opis za novico 11', 0, '2007-08-02 19:33:53'`news`'Novica 12', 'Uvod za novico 12', 'Glavni opis za novico 12', 0, '2007-08-03 19:33:53');

V kontrolerju pridobimo podatke in vključimo pager in nato prikažimo zapise v index.tpl.

V news_controller.php dodajmo:

  1. span style="color: #ff0000;">'limit' => 5, 'page' => 1);

V index() funkcijo dodajmo naslednje:

  1. $this->paginate['order''created' => 'desc');
  2. $this->set('News', $this->paginate('News'));

V prvi vrstici povemo pager-ju da naj rezultate sortira po polju created v padajočem načinu. V drugi vrstici pridobimo podatke iz baze in jih podamo v template index.tpl. V index.tpl bodo novice v $News spremenljivki.

Sedaj bi moral news_controller.php izgledati nekako takole:

  1. span style="color: #ff0000;">'News''News''limit' => 5, 'page''order''created' => 'desc');
  2. $this->set('News', $this->paginate('News'

Prikažimo podatke in pager v index.tpl.

V index.tpl:

  1. <table cellpadding="0" cellspacing="0" width="50%">
  2. <tr style="font-weight: bold;"'News']['title''News']['flash''News']['created'"text-align: center;"'Nazaj''Naprej'

Evo, to je cela umetnost 🙂 Mislim da vsi štekate kaj sem nareidl v index.tpl ? I hope so 🙂

Naslednjič bomo o dodajanju in urejanju novic, zato zadevo le shranite da nebo treba še enkrat delat 😉

Zadevo si lahko ogledate na http://www.linux-si.org/cakephp/news/

Uporabil:
PHP 5.2.3
MySQL 5
CakePHP cake_1.2.0.5427alpha
http://www.linux-si.org/cakephp/news/

P.S. Ne me jebat za kake morebitne slovnične napake 😀

Blaz

Blaz wrote 49 posts

Post navigation


Comments

  • mISOk

    Zanimivo in ko ti delaš enostavno. Bom danes probal začeti in poročam, kako je šlo. ps Stran ne dela več 😉

Dodaj odgovor

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Time limit is exhausted. Please reload CAPTCHA.