[ mitke013 @ 27.05.2010. 15:25 ] @
Imam svoj mvc pattern i klasu router koja treba da generise SEO url-ove, ali i da isti protumaci i pozove odredjeni kontroler. E sad problem; u kontroloru, ako mi treba skok na neku stranicu, koristim ga ovako: Code: header('Location:' . $this->router->find('myalbums')->call('view', 'vesti-sa-farme') ; Sto bi izazvalo skok na http://site.com/myalbums/view/vesti-sa-farme.html ; ovo je samo primer. myalbums je kontroler klasa a view je metoda. Tj. skok na tu stranicu startovace myalbums::view('vesti-sa-farme'). Ko sto rekoh, ja sam lencuga i mnogo volim code-completition koji bi mi sugerisao sta treba da posaljem (npr. slug ili id). Da li postoji nacin da uradim ovako nesto: Code: header('Location' . $this->router->call( myalbums::view('vesti-sa-farme') ) ; Ovo znam da je nemoguce jer ce call() da dobije rezultat od "myalbums::view('vesti-sa-farme')" koji mi nista ne znaci, stavio sam kao ideju da bi ste lakse razumeli sta hocu. Palo mi na pamet da nakon sto ukucam ovo 'myalbums....' posle sve to umotam u navodnike; dok to ne uradim, imam code-completition i vidim koje sve metode myalbums ima i koji parametar treba da posaljem. Ali ni ovo resenje mi se nesto bas ne svidja. Ima li neko drugaciju i bolju ideju? Kako se slicna stvar radi u frameworc-ima tipa zend, symfony, cake itd...? Druga stvar: router moze da se koristi i na sledeci nacin: $this->router->myalbums->view('vesti-sa-farme') ; koje ce takodje dati http://site.com/myalbums/view/vesti-sa-farme.html Za ovo sam koristio __get i __call magic metode. E sad problem; kad ukucam: $this->router.... pored find() i call() dobijam u code-completition bloku i __get() i __call() metode jer su one takodje public. Ako ih stavim kao protected, sve radi, nikakvih problema nema. Muci me sledece: na php.net sajtu, stoji da overloading metode moraju biti public. Ali one rade cak i kad su protected. Da li je neko imao problema sa ovim? |