Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ZF - Problemi i diskusija

[es] :: PHP :: ZF - Problemi i diskusija

Strane: 1 2 3 4 5 ... Dalje > >>

[ Pregleda: 33806 | Odgovora: 229 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon ZF - Problemi i diskusija29.03.2009. u 17:06 - pre 182 meseci
Pre neki dan sam konačno naterao sebe da počnem da proučavam taj Zend Framework. Najpre nisam znao kako da krenem da ga radim, pa rek'o aj da probam ovaj moj lični sajt da odradim preko ZF-a, čisto vežbe radi. I taj tkz. public deo sajta sam odradio bez problema, ali naišao sam na problem kada sam krenuo da radim admin modul, tačnije, nisam mogao ni da krenem da ga radim. Problem mi pravi to što nikako nisam mogao da "nateram" ZF, odnosno njegov FrontController, da vidi oba modula (default i admin).

Ovako mi izgleda organizacija foldera:
Code:

- app
   - default
      - controllers
      - models
      - templates
         - scripts
         - themes
   - admin
      - controllers
      - models
      - templates
         - scripts
         - themes
- data
   - logs
   - tmp
      - templates_c
   - uploaded_files
- libs
   - Smarty
   - Zend
   SmartyTemplater.php
- public
   - css
   - img
   - js
   index.php
   htaccess

Primetićete da u modulima nema onog foldera "views". To je zato što sam se odlučio da u kombinaciji sa Zend-om, umesto onog njegovom ugrađenom template sistema, koristim Smarty. Znam da time automatski gubim mogućnost korišćenja onih silnih helper-a, ali navikao sam na Smarty i nije mi nikakav problem da časkom napišem neki plug-in za njega koji će da zameni odgovarajući helper.

U tom cilju, dodao sam klasu koja se izvodi iz Zend_View_Abstract i njen kod izgleda ovako:
Code:

include_once('Smarty/Smarty.class.php');

class SmartyTemplater extends Zend_View_Abstract
{
    protected $_path;
    protected $_engine;
    
    public function __construct($template_dir, $compile_dir)
    {    
        $this->_engine = new Smarty();
        
        $this->_engine->template_dir = $template_dir;
        $this->_engine->compile_dir  = $compile_dir;
    }

    public function getEngine()
    {
        return $this->_engine;
    }
    
    public function setCompileDir($compile_dir)
    {    
        $this->_engine->compile_dir = $compile_dir;
    }
    
    public function getCompileDir()
    {    
        return $this->_engine->compile_dir;
    }
    
    public function __set($key, $val)
    {
        $this->_engine->assign($key, $val);
    }
    
    public function __get($key)
    {
        return $this->_engine->get_template_vars($key);
    }
    
    public function __isset($key)
    {
        return $this->_engine->get_template_vars($key) !== null;
    }
    
    public function __unset($key)
    {
        $this->_engine->clear_assign($key);
    }
    
    public function assign($spec, $value = null)
    {
        if (is_array($spec)) {
            $this->_engine->assign($spec);
            return;
        }
        $this->_engine->assign($spec, $value);
    }
    
    public function clearVars()
    {
        $this->_engine->clear_all_assign();
    }
    
    public function render($name)
    {
        return $this->_engine->fetch(strtolower($name));
    }    
    
    public function _run()
    { 
    }
}

Posle u bootstrap-u samo kažem Zend_Controller-u da koristi ovu klasu umesto one default Zend_View klase:
Code:

$vr = new Zend_Controller_Action_Helper_ViewRenderer();
$vr->setViewScriptPathSpec(BASE_PATH . 'app/:module/templates/scripts/:controller/:action.:suffix');
$vr->setView(new SmartyTemplater(BASE_PATH . 'app/', BASE_PATH . 'data/tmp/templates_c'));
$vr->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($vr);

Da li je to pravi način kad nameravam da imam više modula?

E sad, to sve lepo radi za ovaj default modul, ali za admin nikako... Ja sam samo hteo da umesto da dodajem nove kontrolere, modele i templejte za admin u okviru default modula, dodam ceo modul admin, koji će takođe imati svoje kontrolere, modele i templejte, a koji bi se takođe pozivao iz public foldera, tačnije, preko index.php.

U tom cilju, u onom delu bootstrap-a za definisanje direktorijuma kontrolera sam napisao ovako:
Code:

$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(array('default' => BASE_PATH . 'app/default/controllers', 'admin' => BASE_PATH . 'app/admin/controllers'));

Da li je to ok? Opet kažem, default modul radi super, ali kad pokušam da se "zakačim" na admin (npr. 127.0.0.1/zf_test/admin/index), baci se onaj izuzetak, tipa: Invalid controller specifed (error), ili tako nešto...

Ako vam išta znači, ovako mi izgleda ostatak bootstrap fajla, odnonso, onaj početni deo, pre ova dva koja sam vam ispisao:
Code:

date_default_timezone_set("Europe/Belgrade");

define('BASE_PATH', dirname(__FILE__) . '/');

set_include_path('.' . PATH_SEPARATOR . BASE_PATH . 'libs/' 
    . PATH_SEPARATOR . BASE_PATH . 'app/default/models/'
    . PATH_SEPARATOR . BASE_PATH . 'app/admin/models/'    
    . PATH_SEPARATOR . get_include_path()); 
     
include_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

$config = new Zend_Config_Ini(BASE_PATH . 'config.ini');
Zend_Registry::set('config', $config);

$logger = new Zend_Log(new Zend_Log_Writer_Stream(BASE_PATH . 'data/logs/debug.txt'));
Zend_Registry::set('logger', $logger);

$db = Zend_Db::factory($config->database);
$db->query('SET NAMES UTF8');
Zend_Registry::set('db_handler', $db);
Zend_Db_Table::setDefaultAdapter($db); 


Da li bi možda bolji pristup bio da napravim jedan novi folder admin, koji bi, kao i public, opet imao svoj index.php (bootstrap), htaccess, itd., pa da onda on radi samo sa tim admin modulom? To bi verovatno i radilo, ali ja bih samo voleo da rešim taj problem korišćenja više modula, na jednom bootstrap-u (index.php).

Unapred hvala.

mister rap: naslov teme

[Ovu poruku je menjao Mister_rap dana 18.06.2009. u 22:16 GMT+1]
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.3.nat.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima29.03.2009. u 18:17 - pre 182 meseci
Gde si nas'o smarty... ugh. No, tvoj licni izbor, ne petljam se u to :)

IndexController.php za default module ti izgleda:
Code:

class IndexController extends Zend_Controller_Action


a IndexController.php za admin module ti izgleda:
Code:

class Admin_IndexController extends Zend_Controller_Action


Verujem da ce ti to resiti problem. Sad, da li ce smarty redovno da vuce templejtove, to vec ne znam.

Edit: Prosetaj se po mom blogu, nacices tamo svasta nesto dobro za zf ;)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima29.03.2009. u 19:29 - pre 182 meseci
Čekaj, nemoj mi reći da postoje pravila dodeljivanja imena admin kontroleru... :S Au brate nikad to ne bi izvalio. Hvala ti puno!

Da, gledao sam tvoj blog, odličan je kao tutrorijal za ZF. Svaka čast. Tu sam i video tu "caku" za postizanje modularnosti u okviru ZF-a. I znao sam da ćeš mi ti prvi odgovoriti na ovaj problem, jer vidim da se već dosta dugo baviš ZF-om.

Nemoj da mi diraš Smarty. :P Šalim se, naravno, ukusi su različiti, ali meni on sasvim odgovara. Mada, u kombinaciji sa ZF-om, nekad ume da napravi problem, jer kad imaš više tih Index kontrolera, eto npr. u default i admin modulu, često zna da se desi da on iz onog njegovog keša (templates_c) dovuče pogrešnu stranicu iz keša, npr. zameni index stranicu default modula sa index stranicom admin panela, itd. A čini mi se da postoji samo jedno rešenje za taj problem, a to je da za svaki modul praviš poseban folder za kompajliranje (podfolderi u templates_c), i onda nema problema. Ja to radim tako što u init() f-jama kontrolera samo set-ujem taj compile dir Smarty-ju, preko ove Templater klase. Možda ti znaš neko elegantnije rešenje?
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.3.nat.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima29.03.2009. u 19:49 - pre 182 meseci
Sa tim Admin_ mu dodajes samo putanju. Klasa unutar IndexController.php u default modulu se zapravo treba zvati Default_IndexController, ali se moze izostaviti jer ce ZF sam tamo da potrazi. Jednostavno, za naziv klase moras prepend-ovati ime modula sa velikim pocetnim slovom.

Potrosi dan-dva na citanje ZF wikija http://framework.zend.com/wiki/display/ZFDEV/Home i coding standarda http://framework.zend.com/manual/en/coding-standard.html mnogo ces toga videti i pohvatati odatle.

Takodje predlazem da procitas i predlog za ZF strukturu fileova i foldera http://framework.zend.com/wiki...oject+Structure+-+Wil+Sinclair

Koristi Zend_View i Zend_Layout. Nije na odmet to sto znas smarty (znam ga i ja, uzalud potrosenih nekoliko dana xD), ali _View i _Layout u kombinaciji sa ostalim komponentama su jako mocni (_Form, _Cahce, pluginovi, helperi). Smarty ti dodje samo kao jos jedan sloj, koji je po meni nepotreban. Verujem da znas i sam da PHP ima svoju "template" sintaksu, ili kako se vec zove, tako da view scripte nisu nista manje citljive nego u slucaju kod smartyja. Ako znas kako da povezes smarty sa zf-om, ok, drago mi je, al moj savet je da radis sa _Viewom.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima29.03.2009. u 20:13 - pre 182 meseci
Aha, znači za sve admin kontrolere, pa i za sve ostale kontrolere specifičnih modula (koji nisu default) bih trebao da stavljam prefiks.
Čudan je taj Zend, al' mnogo je moćan. Mada može i te kako da "zakomplikuje život" na manjim projektima...

E što mi neko nije davao da čitam takvu "lektiru" u srednjoj školi...

Što, jer ova moja struktura loša? Ne, ali koliko sam shvatio, vidim da dosta varira ta struktura projekta, valjda svako ide onako kako mu odgovara, a i u zavisnosti od zahteva samog projekta. Ova moja mi se nekako činila logičnom... Barem za početak...

Ma da, ali ne znam kako bih ti rekao, meni je nekako ružno kad vidim to mešanje PHP-a i HTML-a. Zar nije bolje ovako: {$foo}, nego ovako: <?php echo $foo; ?>. Šta ja znam, opet kažem, to je sve subjektivna stvar. Ja sa nekako trudim da PHP, kao napredan jezik, NE koristim za ispis nečega, aj' tako da kažemo, "nenaprednog", kao što je (x)HTML, a je upravo ono što Smarty omogućava. Doduše, kompajlirana verzija je opet to mešanje PHP-a i HTML-a...
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: ZF + Smarty = problem sa modulima29.03.2009. u 23:12 - pre 182 meseci
Struktura ti je ok...

Takodje glas za php short tagove.

Jer {$foo} i <?=$foo?> su prilicno slicni, plus ako ti nekad zatreba nesto da ispravis na brzinu uvek mozes da ubacis <?php ...?>
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 10:04 - pre 182 meseci
Citat:
Mister_rap:Takodje glas za php short tagove.

U bre, sad sam 1 prema 2. :) Dobro kad vi tako kažete...
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
91.148.77.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 10:19 - pre 182 meseci
Ne daj se Nikola, podrzimo smarty kao takav :)
Salim se, ali i ja ne volem nikako da vidim taj php unutar. Neznam kako bi se recimo {head}{/head} plugin uradio sa php tagovima?
Mislim, to mi sad jedino pada napamet ovako zarad diskusije, taj plugin se moze ubaciti i na kraju bilkog templejta, a smarty ga posle prebaci tik ispred </head> taga. To mu je lako jer parsira ceo doc trazeci delimitere, kako bi to recimo radilo sa php tagovima? I slicni primeri sa takvim pluginovima/blokovima koji koriste parsiranje sklopljenog dokumenta.
Korisno kada recimo u nekom modulu treba uvuci neki poseban css i/ili js u head tagu...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 11:07 - pre 182 meseci
Aha, šta ćete sad?

Šalim se, (mnogo se ja šalim na ovoj temi ), ali eto kad smo kod head sekcije, ja za te svrhe ubacivanja dodatnih stilova i js-ova, ili samo promene title-a stranice koristim ovu moju malu klasu HeadGenerator. Npr. evo sad kad radim sa ZF-om, za sve kontrolere jednog modula imam jednu "međuklasu" (CommonController), iz koje se izvode ostali kontroleri, i ona samo služi za neko inicijalno set-ovanje kontrolera. Ta klasa je apstraktna i izvodi se iz Zend_Controller_Action, i ima samo jedan metod init(), u koji ja "natrpam" sve što je zajedničko za kontrolere, npr. podešavanje CSS stila, ovako:
Code:

$this->head_generator = new HeadGenerator();
$this->head_generator->css = substr($this->getRequest()->getBaseUrl(), 0, -6) . 'app/default/templates/themes/' . $theme_dir . '/default.css'; 

Zatim set-ovanje onog Smarty-jevog compile foldera (za svaki modul mora poseban folder):
Code:

$compile_dir = $this->view->getCompileDir();
$this->view->setCompileDir($compile_dir . '/default');

Pa onda recimo, konkretno, za ovaj primer što sad radim, pošto podatke u sidebar meniju vučem iz baze, onda ide komunikacija sa nekim modelom, koji će da vrati niz, i koji ja posle ispisujem u template-u, itd.

I sve to stoji u toj init() f-ji, i onda kad se neki kontroler izvede iz te klase, on samo u njegovom init-u pozove ovaj nadređeni metod i po potrebi odradi još nešto, npr.
Code:

class PortfolioController extends CommonController 
{
    public function init() 
    {
        parent::init();
        
        $this->head_generator->title .= ' | Moj rad'; 
    }
       
       //ostatak koda
}

I posle samo u nekoj akciji pošaljem Smarty-ju ono što Head Generator output-uje, a to je cela head sekcija:
Code:

$this->view->head = $this->head_generator->create_head();

A onda u template-u uvek prvo ispišem tu promenljivu koja sadrži head sekciju:
Code:

{$head}

I onda već imam ispisan onaj deo počevši od DOCTYPE-a, pa do zatvaranja head-a (</head>).
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 11:21 - pre 182 meseci
U jeeee... Pogledajte ZF-ove view helpere, ima sve sto treba za te vase headove :P http://framework.zend.com/manual/en/zend.view.helpers.html

Nikola, sto ne drzis CSS fileove u public folderu, i onda mozes stilove pozvati sa, na primer: /css/default/style.css? Ovako ti kod svakog novog zahteva imas dodatne pozive, prvo za request pa posle za baseUrl. OK, super, CSS ti je tamo gde su i sabloni, ali opet... ZF je i ovako spor (procitaj ovo za optimizaciju http://www.survivethedeepend.c...or.zend.framework.applications), nemoj jos vise da ga usporavas :)

Inace, i ja tako radim da imam jednu "master" klasu, samo neki kazu (cuj neki, ljudi koji prave ZF :D) da je to losa praksa i da sve to treba odraditi preko pluginova i helpera. Nazalost, u poslednje vreme nikako da stignem da se poigram stim.

Zasto bi koristili neke dodatne komponente/klase/biblioteke kada sve to imate u ZF-u? Naravno, pod pretpostavkom da koristite ZF kao celinu, a ne samo neke njegove komponente.

Edit: Na vam smartijevci http://nosmarty.net/ :P

[Ovu poruku je menjao kazil dana 30.03.2009. u 12:36 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 11:50 - pre 182 meseci
Citat:
kazil:Nikola, sto ne drzis CSS fileove u public folderu, i onda mozes stilove pozvati sa, na primer: /css/default/style.css? Ovako ti kod svakog novog zahteva imas dodatne pozive, prvo za request pa posle za baseUrl. OK, super, CSS ti je tamo gde su i sabloni, ali opet... ZF je i ovako spor (procitaj ovo za optimizaciju http://www.survivethedeepend.c...or.zend.framework.applications), nemoj jos vise da ga usporavas :)

Ma to sad samo zbog ovog projekta nešto isprobavam, jer hoću da omogućim da se iz admin panela jednim klikom menja cela tema sajta, pa mi je zato bolje da te CSS-ove vezujem za konkretnu temu, a u public/css bih držao samo neke custom CSS-ove, tipa za kontakt formu, itd. Jer recimo u tom folderu default/templates/themes bih držao nekoliko tema (tema1, tema2), i onda mi je nekako bolje da CSS određene teme bude u tom istom folderu...

 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 13:38 - pre 182 meseci
@Nikola, kazil

Pristup koji koristite nikako nije dobar i narusava MVC, moze da stvori niz problema narocito na malcice vecim projektima. Jednostavno realna potreba za tim ne postoji...

Citat:

Pa onda recimo, konkretno, za ovaj primer što sad radim, pošto podatke u sidebar meniju vučem iz baze, onda ide komunikacija sa nekim modelom, koji će da vrati niz, i koji ja posle ispisujem u template-u, itd.


Ako procitas ovo sto si napisao uocices da je uloga kontrolera u ovom slucaju minimalna ili je nema at all. Stoga sve ovo moze da ide u neki helper koji ce to da odradi za tebe i koji ces da pozoves u view-u.

Sta vam tacno radi head generator ili kako se vec zove nemam pojma ali je prilicno besmisleno jer ta klasa moze da se svede na par linija koda, pa je apsolutno logicno da to bude helper...

Uz duzno postovanje, ovo ti je apsolutno nepotrebno:
Code:

 $this->head_generator->title .= ' | Moj rad';


Citat:

Zasto bi koristili neke dodatne komponente/klase/biblioteke kada sve to imate u ZF-u? Naravno, pod pretpostavkom da koristite ZF kao celinu, a ne samo neke njegove komponente.


Postoje ali jednostavno neke stvari nisu dovoljno dobre tj, mogu biti bolje :P Recimo mnogo nas koristi doctrine neki propel jer imaju svoje prednosti. Ali nema potrebe da uvlacis recimo 3d party lib za openID kad ZF-ov je ok


Citat:

ZF je i ovako spor (procitaj ovo za optimizaciju http://www.survivethedeepend.c...or.zend.framework.applications), nemoj jos vise da ga usporavas


Sa ovim se nikako ne slazem, jednostavno sasvim je razumljivo da ako lose projketujes app ma u cemu da ga pises ce raditi sporije nego sto bi trebalo. Takodje jasno je da stvari kao autoload usporavaju rad i taj racionalno da kesiras stvari ako za ti imas potrebu...
Danas su serveri prilicno mocni i ZF radi perfektno i savrseno brzo, poenta je samo kako se koristi!

 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 14:11 - pre 182 meseci
Sa datom kolicinom znanja i pre svega iskustva, u datom vremenu, to mi se cinilo najboljim resenjem :) Pre nesto jace od godinu dana, mislio sam da je ZF (ili bilo koji fw) potpuno nepotrebno... A sad... Jbg, uce se ljudi :)

Ako ti nesto nije dovoljno dobro, a ti napisi kako bi trebalo pa ubaci u repository :P

Sa kojim se neslazes? Sa mojom tvrdnjom da je ZF spor ili sa savetima za optimizaciju? :) Lose sam se izrazio... Nije spor, ali moze biti brzi, zato ima tih saveta za optimizaciju. Ali ti saveti nisu usko vezani samo za ZF, vec i za sam php i apache.

Zasto kazes da autoload usporava? On je upravo tu da se izbegnu "milioni" require-a i include-a, koji najcesce imaju za rezultat gomilu ucitanih fileova, ali nikad iskoristenih. Ako ti je Zend_Loader previse spor, mozes iskoristiti i najobicniju __autoload() funkciju, ne? :)
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 14:37 - pre 182 meseci
Citat:

Nije spor, ali moze biti brzi, zato ima tih saveta za optimizaciju. Ali ti saveti nisu usko vezani samo za ZF, vec i za sam php i apache.


Ovo je vec druga stvar, nisam se inicijalno slozio sa tvojom konstatacijom da je spor.

Citat:

Zasto kazes da autoload usporava? On je upravo tu da se izbegnu "milioni" require-a i include-a, koji najcesce imaju za rezultat gomilu ucitanih fileova, ali nikad iskoristenih. Ako ti je Zend_Loader previse spor, mozes iskoristiti i najobicniju __autoload() funkciju, ne? :)


Mislio sam prvenstveno na Zend_Loader::registerAutoload(); ne na kompletan Zend_Loader ili autoload f-ju.

Citat:

Ako ti nesto nije dovoljno dobro, a ti napisi kako bi trebalo pa ubaci u repository :P


Haha, mislim da ubacivanje OR mappera kakav je doctrine ne dolazi u obzir za pocetak!
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 20:06 - pre 182 meseci
Citat:
Mister_rap: Ako procitas ovo sto si napisao uocices da je uloga kontrolera u ovom slucaju minimalna ili je nema at all. Stoga sve ovo moze da ide u neki helper koji ce to da odradi za tebe i koji ces da pozoves u view-u.

Ok, eto u tom cilju sam napravio dodatni plugin (f-ju) za onu SmartyTemplater klasu (ipak sam rešio da se držim Smarty-ja ), koji samo instancira taj moj glavni model, a ovaj zatim dohvata te elemente menija iz baze u vidu niza, koje ja posle ispisujem. Posle u template-u samo napišem {sidebar_items} (tako se zove ta f-ja, odnosno, plugin). Eto ja mislim da je to, na neki način, imitacija helper-a.

I ti sad kažeš da je bolje da na sličan način napravim i helper (plugin) za head sekciju... Aj probaću i to, mada ne vidim zašto je baš toliko loše koristiti i ovu moju pomoćnu klasu (HeadGenerator).
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: ZF + Smarty = problem sa modulima30.03.2009. u 20:45 - pre 182 meseci
Citat:

I ti sad kažeš da je bolje da na sličan način napravim i helper (plugin) za head sekciju... Aj probaću i to, mada ne vidim zašto je baš toliko loše koristiti i ovu moju pomoćnu klasu (HeadGenerator).


Nisam rekao da je bas toliko lose, al ajde :)

U svakom slucaju zasto je pametnije koristiti helper:

Nema potrebe da ga instanciras u svakom kontroleru, pozivas ga samo u templejtima ili delovima istih u kojima ti treba.
Istovremeno ga instanicaras i dobijas rezultat, pises manje koda...
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima02.04.2009. u 16:19 - pre 182 meseci
Upravo sam uradio onako kako savetuju: nema "medjukontrolera", vec svaki kontroler nasledjuje direktno Zend_Controller_Action, a ono sto sam imao u "medjukontroleru" sam prebacio u Action Helper-e i osim sto mi je mnogo jasniji kod, dobio sam i oko 0.1 sekunde na svakom zahtevu. Nije nesto, al' je brze.
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: ZF + Smarty = problem sa modulima02.04.2009. u 19:33 - pre 182 meseci
Super, plus mislim da je pametnije i za dokumentaciju :P

Citat:

dobio sam i oko 0.1 sekunde na svakom zahtevu


Sa cime (ili na koji nacin) testiras, meris!?
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: ZF + Smarty = problem sa modulima02.04.2009. u 19:43 - pre 182 meseci
Hehe, sa najobicnijim starttime - endtime klasicom, microtime() :) mislim, znam da je daleko od merodavnog, al eto... Desavalo se da kad dodam nesto novo, izvrsenje skoci za 1-2 sekunde (LEFT JOIN bejbe!), pa malo optimizujem upit i kod i eto ga ponovo na "normali" :)

Planiram instalirati xdebug i snjim proveravati (cackao sam bio nesto to na windowsu, al mi je pucao apache zbog njega, sad radim na linuxu, mozda ce biti druga prica), a i nedavno je izasao ovaj http://jokke.dk/blog/2009/01/introducing_the_scienta_zf_debug_bar plugin za ZF, ispisuje vreme izvrsenja, broj kverija i tako neke sitnice.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: ZF + Smarty = problem sa modulima07.04.2009. u 14:06 - pre 182 meseci
Evo mene opet sa problemom... :) Ovog puta je baš bizaran. :S

Naime, već sam vam rekao da radim sa Smarty-jem, pa sam između ostalog napravio jedan helper, odnosno Smarty plugin, koji samo treba da mi output-uje ili login formu, ili link za logout, u zavisnosti da li je korisnik prijavljen ili ne. Kod izgleda ovako:
Code:

if (!Zend_Auth::getInstance()->hasIdentity()) {
    //output-uj login formu
}
else {
    //output-uj link za logout
}

E i sve to radi super na dva kontrolera, ali na jednom trećem - nikako! Sad uopšte ne mogu da odem na taj kontroler, jer se uvek baci onaj izuzetak Invalid controller specifed (error), jer verovatno dolazi do neke greške, ali koje, pojma nemam.

Nekako sam otkrio da tom kontroleru "smeta" baš taj helper, jer kad obrišem poziv tog helpera u templejtu, sve je ok. Onda sam uzeo da brišem liniju po liniju iz tog helpera, da bih dobio malo konkretniji uvid u problem, i otkrio da problem pravi baš ta linija koda: Zend_Auth::getInstance()->hasIdentity(). Tačnije, poziv metoda hasIdentity(), jer kad njega obrišem, opet je sve ok, i templejt se lepo output-uje. :)

Neverovatno mi je to da je na ova druga dva kontrolera apsolutno sve ok, i uopšte im "ne smeta" taj helper (plugin).

Onda sam pokušao da konačno napravim i taj Error kontroler, da me ne bi smarao za taj izuzetak, i posle toga, kad sam pokušao da otvorim stranicu tog problematičnog kontrolera, dobio sam ovu poruku:
Cannot send headers; headers already sent in, itd. I da, znam da se ta greška u 99% slučajeva javlja zbog nekog "praznog znaka" pre <?php ili posle ?>, ali proveravao sam sve, nije do toga...

Stvarno ne znam šta mu je, već celo jutro se nerviram s tim...
 
Odgovor na temu

[es] :: PHP :: ZF - Problemi i diskusija

Strane: 1 2 3 4 5 ... Dalje > >>

[ Pregleda: 33806 | Odgovora: 229 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.