Codeigniter klicanje funkcije
4 naročniki
4 naročniki
Začel sem uporabljati Codeigniter sistem in mi je zelo všeč. Imam pa eno vprašanje.
Ali je mogoče klicati funkcijo iz enega controllerja v drugega tako kot jo lahko znotraj enega npr: $this->show();
10 odgovorov
S tem rušiš design pattern, ki pravi da na 1 request odgovarja le 1 controller.
Če imaš potrebo po takih funkcijah, premisli o smotrnosti izdelave librarya, kjer boš imel te funkcije, ali, morda boljše, extendaš CIController v nek MYController, kjer bodo vse tvoje funckije, ki so skupne dvem ali več kontrolerjem. (osebno uporabljam ta drugo varianto).
Če je funkcija preprosta pa jo lahko daš tudi v helper.
hmmm.. ni mi čisto jasno kdaj se posluževati library, helper, driver ali predlagani MY_Controller.
v svojem sistemu imam controller ki ureja komentarje celotne strani. te funkcije bi potem rad uporabit pri prikazu slike, ki bi jo rad komentiral
jaz sem prebral celotno dokumentacijo + vse primere na net.tuts.com in lahko rečem, da je to pravilna pot, ker vmes še pridobiš veliko drugih odgovorov, ki ti mogoče v "tem trenutku" niso uporabni ;) s tem si boš odgovoril, kdaj uporabljat library, helper, driver, controller,... in kdaj so potrebne spremembe po system folderju! LP
halo, večji del procedure, ki se ukvarja s podatki lahko daš v "model", nekaj ti še ostane v kontrolerju in za to ni problema, če maš skopirano. Saj večina kontrolerjevih metod je od 10-20 vrstic max, razen pri večjih formih.
v cakephp jaz ponavadi splosno funkcijo dam kar v app_controller ki je dostopen vsem controllerjem. Ce mas pa kas specificnega se pa naredi library
net.tuts mi deluje zelo koristen. opažam da sem se prehitro pognal v programiranje in ne razumem celotnega koncepta. edina stvar po parih tutorialih, ki mi ni povsem jasna je, zakaj se recimo podatki ne obdelajo v controllerju in pošleju v view, kjer bi se samo izpisali.
npr: izpis komentarjev, se v controllerju sestavi v <div> itd, nato se ves ta delni html pošlje v view in samo izpiše. s tem lahko en view uporabiš na vseh straneh, ker ne vsebuje php-ja ampak samo izpis. je tako narobe?
To si še enkrat preberi:
http://codeigniter.com/user_guide/general/views.html
V praksi so zelo uporabni t.i. view partials, torej
$string = $this->load->view('myfile', '', true);
potem v tem $string imaš sparsan view in ga v kakšnem drugem lahko uporabiš
// Spravi box kategorije v spremenljivko
$data['kategorije'] = $this->load->view('boxes/kategorije_view', null, true);
// Končni prikaz
$this->load->view('glavni_view',$data);
[/quote]
če prav razumem.... v določenem manjšem view-ju obdelaš prikaz, ga shraniš v $data ter posreduješ glavnemu prikazu?
Jp, v določenem manjšem viewu obdelaš samo neko smiselno celoto, kot v zgornjem primeru npr. okvirček s seznamom kategorij. Potem ta "manjši view" preprosto echo-jaš v nekem glavnem viewu, kjer želiš da se ta element pojavi.