Prvi koraki v CakePHP

Kaj je CakePHP ? CakePHP je PHP framework ki uporablja MVC arhitekturo. MVC je Model Controller View. Kaj to pomeni. To pomeni da imamo strukturo strani ločeno po Model-ih View-ih in Controller-jih.

Kaj vse omogoča ta zadeva sem kar skopiral iz njihove strani … /* * Model, View, Controller Architecture * View Helpers for AJAX, Javascript, HTML Forms and more * Built-in Validation * Application Scaffolding * Application and CRUD code generation via Bake * Access Control Lists * Data Sanitization * Security, Session, and Request Handling Components * Flexible View Caching * And More... */

Struktura CakePHP frameworka:

/app ../models -> Z modeli ločimo template od engina strani. ../controlers -> Kontrolerji nam pomagajo pri upravljanju neke sekcije na strani (blog, galerija,…) ../views -> Templati za stran, modele, itd. ../plugins -> Plugini so dodatki za CakePHP framework. Recimo naredite neko aplikacijo in jo potem date kot plugin. Plugin je ubistvu celoten site. Recimo Blog plugin ipd. Plugini imajo isto sturkturo kot tu ki jo sedaj opisujem. Primer: /app/plugins/ime_plugina/controllers … ../vendors -> Mapa kamor damo knjižnice ki niso od CakePHP frameworka. PEAR, PHPMailer,…

Za začetek naredite naslednje. V ‘app/config/routes.php’ zamenjajte vrstico: Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); z Router::connect('/', array('controller' => 'index', 'action' => 'index')); in pa naredimo file app_controller.php v ‘app/’ direktoriju. V file dodajte naslednje: Kaj tu naredimo ? V routes.php povemo frameworku kaj naj pokliče ko pridemo na osnovno stran. V našem primeru IndexController in pa funkcijo index() v tem kontrolerju.

Z app_controller.php sistemu nastavimo default nastavitve. $ext pomeni kakšne končnice bomo uporabljaji za template. Z $layout spremenljivko povemo sistemu da naj uporablja default.tpl template za našo stran. To lahko spremenimo v vsakem kontrolerju z istim načinom kot tu. Tu zato definiramo da nam ni treba v vsakem kontrolerju to ponavljati.

Models Modeli nam omogočajo da ločimo logiko (engine, ne najdem prave besede) strani od templatov. Z modeli recimo dostopamo do baze in delamo operacije na njej… Naj poudarim da cake kliče tabele v bazi v množini!! Recimo da imamo model Product v tem modelu bo cake sam od sebe klical tabelo v bazi ‘prefixproducts’! ‘prefix‘ se seveda doda le v primeru če smo ga nastavili v configu. Seveda v samem modelu lahko tudi nastavimo kateri primary key se bo uporabil (po defaultu je to polje ‘id’) in katero tabelo naj cake vzame v primeru če naša tabela v bazi ni v množini.

Primer kako bi izgledal Model Product: Model: app/models/product.php Tabela: products Polja: productid (int:autoincrement), name (varchar:25), description(text), hidden(boolean) Ko ustvarimo model name cake ponuja že ogromno funkncionalnosti. Tako imamo recimo v kontrolerju na razpolago že model Product in tako lahko že komuniciramo z bazo. Recimo findAll(’hidden=0′, ‘*’) funkcija nam bo vrnila vse zadetke ki ustrezajo danim pogojem. Za celoten spisek funkcij in spremenljivk ki so na razpolago v modelu poglejte TU

Controllers Kontrolerji nam pomagajo da upravljamo neko sekcijo na strani. Naj nadaljujem kar z primerom Products. Imamo app/controllers/products_controller.php. Ko gremo na stran www.nasadomena.com/products/ se pokliče omenjeni kontroler in v njem index fukncija. V prve nam bo javilo napako ker še nismo naredili templata za index funkcijo. Naredi file ‘app/views/products/index.tpl’ in stem se znebimo omenjenega error-ja. Primer: set('products', $this->Product->findAll('hidden=0', '*')); }

} ?> Če sprobamo in gremo na www.nasadomena.com/products/view/?id=1 nam bo zopet javilo error ki nam pove da moramo narediti v kontrolerju funkcijo view(). set('products', $this->Product->findAll('hidden=0', '*')); }

function view()
{
    $this->set('product', $this->Product->find(array('hidden=0', 'product_id='.$this->params['url']['id']) , '*'));
}

} ?>

Kaj je $this->set() in pa $this->Product->findAll() ? $this->set(): funkcija ki nam nastavi parametre za v template. Recimo $this->set(’test’, ‘Testni parameter’); bomo v templatu klicali kot $test.

$this->Product->findAll(): ->Product pomeni ime Modela ki ga kličemo. Uporabljamo namreč model Product! ->findAll() je predefinirana fukncija frameworka ki nam je na razpolago v vsakem Modelu ki ga naredimo. findAll() potegne podatke iz baze glede na podane parametre.

Tako kot modeli imajo tudi kontrolerji že pred definirane funkcije in spremenljivke. KLIK

Ko naredimo to funkcijo in gremo zopet na omenjeni naslov www.mojadomena.com/products/view/?id=1 nam bo javilo napako da template za view() funkcijo ne obatsaja. Naredimo ga. Naredite file ‘app/views/products/view.tpl’ in zadeva bo šla skozi.

V ‘app/views/products/index.tpl’ dodajmo naslednje:

    <li><a>"&gt;</a></li>
    

V ‘app/views/products/view.tpl/’ dodajmo še naslednje: Ime izdelka: Opis izdelka: Zadeva je preprosta. Npr. url ‘www.mojadomena.com/products/view/?id=1′ pomeni naslednje: /products/ = Kličemo kontroler ProductsController -> products_controller.php view = Kličemo funkcijo view() v ProductsController-ju ?id=1 = Funkciji view() v kontrolerju ProductsController podamo ID produkta ki si ga želimo ogledati.

Če view na koncu url naslova ni podam potem se po defaultu kliče funkcija index(). To lahko spremenimo in nastavimo na kaj drugega. V ‘app/config/’ direktoriju imate file routes.php in dodamo naslednjo vrstico: Router::connect('/products', array('controller' => 'products', 'action' => 'test')); Kaj pomeni to ? To pomeni da namesto ko bomo prišli na www.nasadomena.com/products/ cake nebo klical index() funkcije vendar bo klical test() funkcijo v kontrolerju. Seveda moramo za to funkcijo tudi narediti template.

V mojem primeru sem naredil v test() funkciji intreni forward na index() funkcijo: function test() { $this->setAction('index'); }

$this->setAction() je funkcija ki naredi interni forward na eno od funkcij ki jih imamo v kontrolerju. Zelo uporabna zadeva!

Če ste opazili smo pozabili dodati IndexController. Dodajmo ga. Postpek je isti kot za ProductsController. Naredimo file ‘app/controllers/index_controller.php’ in dodajmo naslednje v njega: pageTitle = 'Naša prva stran'; } }

?> Kaj pomeni spremenljivka $uses ? Pa še prazna je po vrhu :( Z $uses povemo sistemu katere Modele rabimo v tem Index kontrolerju. Če pustimo prazno potem ne kličemo nobenega Modela. Lahko pa kličemo kateregakoli ki ga pač imamo. Če probate $uses spremenljivko zakomentirati boste opazili da nam bo sistem vrnil error ker nismo naredili Modela Index. Zato smo uporabili prazen $uses in sistemu rekli da naj ne išče nobenega Modela za Index kontroler. $this->PageTitle že samo po sebi pove da nastavimo naslov za našo stran. Vendar samo v index kontrolerju! Recimo če bi želeli imeti isti naslov na vseh straneh potem dodamo to v appcontroller.php in v naših kontolerjih samo doštukamo naslov. Primer če imamo v appcontolerju nastvaljen var $pageTitle = ‘Test stran - ‘; function index() { $this->pageTitle .= '123'; } Tako bo naslov strani naslednji: ‘Test stran - 123′. Upam da je vsem jasno kaj sem hotel povedati :)

Naredimo template za IndexController in index() funkcijo. NAredimo file ‘app/views/index/index.tpl’ in dodajmo naslednje v njega: Prva stran ki se kliče iz kontrolerja index_controller.php. Funkcija index() Naredimo še glavni layout template. NAredite file ‘app/views/layouts/default.tpl’. V file dodajmo naslednje:

Menu

Seveda ne pozabimo še na config baze: editirajte file ‘app/config/database.php’ in si nastavite vse potrebno za povezavo z bazo. host, username, password, baza… Če database.php še nimate potem so preimenujte database.php.default v database.php. Poglejte si tudi malo ostale confige! Recimo v core.php si nastavite DEGBU na 0 kajti drugače boste dobivali debug informacije od frameworka. Seveda imate to lahko vklopljeno… Po defaultu je debug nastavljen na 2.

Ne pozabite da mora biti ‘app/tmp’ direktorij pisljiv za web server! celoten tmp/ direktorij in pod direktoriji!

Jaz sem uporabil CakePHP iz SVN-ja. 1.2Nightly build verzijo. Delal sem na PHP 5.2.1, MySQL 5.0.24a, Apache/2.0.55

V naslednjih dneh pričakujte nadaljvenja. In sicer, pisalo se bo o naslednjih funkcionalnostih. - Zakaj uporabiti helperje - Uporaba HTML helperja - Uporaba Ajax helperja - Uporaba scaffoldinga - …

Seveda bomo z primeri nadgradili kar smo že začeli….

iPhone reklama

Reklama za mega zadevico iPhone [youtube]1xXNoB3t8vM[/youtube]

Speed Cat Puma shoes

Včeraj sem si nabavil nove superge in namreč od pume. Sldnje čevlje naj bi nosili vsi v F1 ekipi Ferrari :). Namreč sem fen Ferrarija in ko sem jih videl sem jih takoj naročil :). Upam da jih čimprej dobim. So se pa začele dogajati čudne stvari, namreč naročilo (pač kjer lahko spremljaš kaj se dogaja z naročilom) je izginilo :P Nevem kam :) Upam da je vse OK ker je tudi že vse plačano :) ker 123,10 EUR pa tudi ni malo denarja :) Evo še nekaj slikic od superg :). Ko jih pa dobim (upam da čimprej) pa vam sporočim če so uredne tega denarja :)

Speed Cat Puma shues Speed Cat Puma shues  2



Še link do trgovine kjer jih lahko kupite :) KLIK

Cicigan

Po nekih informacijah ki krožijo okoli, naj bi baje izšla nova revija za romske otroke… :) Cicigan

Petra Slapar

Včeraj sem si malce pogledal oz. poiskal po netu o Petri Slapar. Punca je res simpatična in je vredna da si zasluži post na blogu :D Seveda ko sem videl še filemček sem opazil da je res prava porno diva! Noro.

Na sloreactorjevem forumu sem pa tudi prebral da naj bi bila Petra Slapar aka “moravška pamela”, kar bi lahko tudi držalo :) Zanimivo je ker smo cca. 4 leta nazaj zahajali v isti lokal in bi se jo moral nekako od tam spomnit :/ Od takrat se je kar dosti spremenila, na boljše seveda :)
Petra Slapar

Kar se pa njenega petja tiče pa mislim da se je punca zelo dobro odrezala in da kapo dol al pa še kaj drugega :D V piramidi na rtv-ju so pa zadeli terno ko so zbrali na kup tri lepe bejbe in samo zaradi tega jo sem pa tja tudi gledam :)

Obujanje spominov

Danes sem med branjem foruma na siolu skočil na youtube.com (pač nek uporabnik je postal lnik) pogledat posnetek koncerta od Severine. Zadeva je nora! Že dolgo tega ko sem poslušal njen live cd in takrat so mi bli te komadi nori. In danes sem naletel na komad, ki sem ga poslušal zagotovo par tisočkrat!

Fantastično! Ženska res zna peti in zna narediti pravo sceno ko ima koncert! Poglejte si …

[youtube]k3l0WhHeDKc[/youtube]

Dodano: Evo še link do bloga kjer boste našli vse klipe in pa fotke od nje ki so razdeljeni po letnicah .. KLIK

Kam so šli vsi prazniki ?

Na pa je knec lepega :( Sploh nevem kako nej upišem vse skupaj. Vse je minilo neverjetno hitro :/ Že sam december je bil dokaj nenavaden. Pil smo bore malo (lani je blo to čist drugače), žural skor nič, sem ga pomojem več žural v novembru :)

Božič je minil bedato hitro. Tisti 4je dnevi ko sem bil doma so bli totalno bedni. Sploh nisem mel občutka da je božič oz. da se bliža novo leto :/ Mogoče je za to kriv sneg, ker ga ni nič zametalo čez praznike ? / Who knows? :)

Da ne govorim o novem letu :) Šel sem v lj. k znancem in blo je totalno dolgčas. Pokal je ko sto mater v okolici, drugega pa nič. TV program je bil tut v pm. Če bi bil sam, bi gledal za novo leto porniče in ne nobenih bednih raket pod kozolcom ipd. :) :) :) Krneki. Nevem a nemorjo neki skup spravt, neki pamtnga al smo tolk v kurcu ? Edin kar sem gledal so ble od Natalije Verboten joške v tisti nejni oddaji. Aja apa Špelo od AtomikHarmonik, matr je huda. Res je prava. Najbolj sem pa pogrešal Tanjo Žagar :( Nikjer je ni blo vidt :(

Uglavnem, če povzamem vse skupaj potem je blo vse skup v falusu.

Nič, srečnga vam želim pa velik seksa, dnarja, zdravja, ma vsega. Pa poglejte si ljubezenski-verzi.com, stran ki sem jo včeraj zložil skupaj ….

nouptime.com

Fantje in dekleta poglejte si naslednji site :D (klikni na spodnji banner). Jaz sem se do solz nasmejal! :):):)

Exceptional service for an exceptional price. My only complaint is that technical support told me to fuck off when I called them, but everything else has been great.



PS2

Pred nekaj dnevi sem bil na božičnih nakupih, pač standard :) In ker me je še malo firbec matral sem šel še malo pogledati v BigBang. Kot vedno seveda grem malo do tehničnih stvari in tam zagledam PS2 in seveda ga tudi kupim :/ Stvari za PS2 so svinjsko drage! Sam PS2 mogoče ni toliko drag (32k sit) vendar igrice so pa mal too much! Skupaj z tremi igricami in PS2 + še en đojstik :) je bilo 70k sit :/

Dobro naj bo. Pridem domov veselo priklopim in seveda vsak špil mi prbije da nimam memory kartice :/ Kot zgleda bi morale še nabaviti memory shit kartico :(

Drugo. Špili niso nič posebnega :/ Grafika bolj kot ne na psu. Nemoraš predvajati doma posnetih DVD filmov :( Lahko samo original! Jaz sem mislil pač da samo za špile zahteva original DVD za filme pa ne. Vendar temu ni tako! :( Baje bi rabil še nek čip … Še 30k sit zraven o_O krneki ….

Ampak kaj čmo. Se bo že za kaj ponucal… :)

Uglavenem! Ne nabavlat tega sranaja!!!!

Vesel božič

Vesel božič vsem!!!!! [youtube]osEwREv97VI[/youtube]

Naslednja stran »