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

ZF - Problemi i diskusija

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

Strane: << < .. 2 3 4 5 6 7 8 9 10 11 ... Dalje > >>

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: ZF - Problemi i diskusija09.07.2010. u 20:59 - pre 168 meseci
Citat:
Nikola Poša: btw Nadam se da ti ne ispisuješ ručno taj JS kôd, već da koristiš echo $this->jQuery(); negde u head sekciji tvog layout-a, koji će sav potreban JS ispisati za tebe.

Hmmm, pa ispisao sam ga rucno. Imam u head sekciji ovo:
Code:

$this->jQuery()->addStylesheet('/js/jquery/css/black-tie/jquery-ui-1.8.2.custom.css')
        ->setLocalPath('/js/jquery/js/jquery-1.4.2.min.js')
        ->setUiLocalPath('/js/jquery/js/jquery-ui-1.8.2.custom.min.js')
        ->enable()
        ->uiEnable();

I nakon toga echo $this->jQuery() al mi to generise samo link tag do stila, i script tagove do potrebnih jquery biblioteka, tako da sam uneo rucno recimo ("#tab").tabs() da bi to radilo.

Sad sam probao da obrisem .tabs() metodu, al ne radi. Nije valjda da moze bez toga ?
 
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 - Problemi i diskusija09.07.2010. u 22:04 - pre 168 meseci
Nema potrebe da radiš to enable() i uiEnable(), jer to će da radi svaki taj view helper kojeg budeš koristio u zavisnosti od potrebe. renderMode je po default-u podešen na RENDER_ALL, tako da bi morao da ti ispiše sve, uključujući i sve što je dodato na $_onLoadActions stek. Za to je zadužen metod _renderExtras() u klasi ZendX_JQuery_View_Helper_JQuery_Container.

Probaj čisto testiranja radi da mu napišeš da hoćeš da render-uješ isključivo onLoad kôd, pa vidi šta će da ti ispiše:
Code:
echo $this->jQuery()->setRenderMode(ZendX_JQuery::RENDER_JQUERY_ON_LOAD);
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: ZF - Problemi i diskusija09.07.2010. u 23:00 - pre 168 meseci
Ne ispise nista kad stavim RENDER_JQUERY_ON_LOAD.

A kad uklonim enable() i uiEnable() i ostavim default render mod ne ispise cak ni one linkove i skript tagove u head sekciji.
 
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 - Problemi i diskusija10.07.2010. u 09:56 - pre 167 meseci
E al' čekaj onda, kad kažeš u head sekciji, da li pod tim podrazumevaš head sekciju u nekom layout skriptu, ako koristiš Zend_Layout, ili je to head sekcija tog konkretnog view script-a u kome ispisuješ te tab-ove?

Ti kad ispišeš echo $this->jQuery(), to će render-ovati sve što je do tada "prikupljeno", a kako se to dešava pre nego što ti pozoveš tabContainer(), taj helper još uvek nije dodao njegov onload JS niti je odradio enable() i uiEnable(), tako da je sasvim logično što ne dobijaš nikakav ispis. Kada bi koristio Zend_Layout, koji je inače implementacija Two step layout pattern-a, tvoji view script-ovi bi imali samo sadržaj karakterističan za tu neku akciju, a sve što je zajedničko za ceo tvoj sajt/aplikaciju, npr. header, footer, bi se nalazilo u layout skriptovima. I sad, Two step layout radi na način da se prvo "pokupi" output tvog view script-a (u tvom slučaju prvo bi se izvršio tabContainer() koji će dodati svoj onLoad JS), pa se tek onda taj output integriše u layout (tek sada se izvršava npr. echo $this->jQuery() u head sekciji layout-a).

Nadam se da razumeš u čemu je problem. Ako hoćeš da koristiš ZendX jQuery view helper-e, i da ti pritom ZF ispisuje i JS kôd, a sve to unutar jednog view script-a sa kompletnim HTML kôdom, najbolje je da npr. uradiš sledeće... Najpre pozoveš tabContainer(), koji će da odradi svoj posao, a onda njegov output smestiš u neku promenljivu. Tek posle toga izvršiš:
Code:
echo $this->jQuery()->addStylesheet('/js/jquery/css/black-tie/jquery-ui-1.8.2.custom.css')
        ->setLocalPath('/js/jquery/js/jquery-1.4.2.min.js')
        ->setUiLocalPath('/js/jquery/js/jquery-ui-1.8.2.custom.min.js');

A onda naravno onaj output kojeg je vratio tabContainer() ispišeš na određenom mestu.
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: ZF - Problemi i diskusija10.07.2010. u 12:57 - pre 167 meseci
Sad generise sve kako treba, kad sam pozvao tabContainer() pre ostalih metoda.. Hvala!!!
Citat:
Nikola Poša: E al' čekaj onda, kad kažeš u head sekciji, da li pod tim podrazumevaš head sekciju u nekom layout skriptu, ako koristiš Zend_Layout, ili je to head sekcija tog konkretnog view script-a u kome ispisuješ te tab-ove?

Da, koristim Zend_Layout i radi se o head sekciji layout.phtml, tu je ono zajednicko za sve stranice sto si naveo, header, footer,
a u body stoji echo $this->layout()->content, i tu se nalazi onaj sadrzaj karakteristican za odredjenu akciju (koji dolazi iz odredjenog view skripta) , ako ne gresim ?

Tabovi su mi zajednicki za sve stranice za default modul, pa sam mislio da bih trebao da ih generisem u layout.phtml, zar ne ?
 
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 - Problemi i diskusija10.07.2010. u 13:15 - pre 167 meseci
Pa da, tako je, ali kažem ti, ja sam mislio da je taj deo sa tabContainer-om karakterističan za određenu akciju, pa mi je logičnije da njega pozivaš u nekom konkretnom view script-u, nisam iz prve shvatio da je tebi i taj deo u layout-u.
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 20:20 - pre 167 meseci
Potrebno mi je da neke parametre koje zadam u ini fajlu koristim u view (.phtml). Ovi parametri bi bili potpuno odvojeni od sadrzaja pocetnog ini fajla.

Za sada sam uspeo iz bootstrap-a (glavnog - ima ih tri zbog dva modula) pozvati plugin koji ce ucitati novi ini fajl i objekat koji napravi poslati u view:
Code (php):

class Public_Plugin_AdditionalConfig extends Zend_Controller_Plugin_Abstract
{
     public function preDispatch ()
     {
          $bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
          $this->_layout = $bootstrap->getResource('layout');
          $this->_view = $this->_layout->getView();
          $config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/myConfig.ini', 'global');
          $this->_view->myConfig = $config;
     }
}


Iz layout.phtml mogu da pristupim, ali meni treba i u kontroleru i u view. U kontroleru i kada izvucem view slicno kao u plugin-u, opet nece.

Kako to da izvedem i ako moze ukratko objasnjenje zasto ovako nece? Izgleda mi da sam nesto propustio a tice se funkcionisanja zenda. Izgubio sam se malo u manual-u...

Hvala. :)
 
Odgovor na temu

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

Član broj: 120044
Poruke: 686
*.mbb.telenor.rs.

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


+2 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 20:27 - pre 167 meseci
FC plugine koristi kada trebas uraditi nesto nad akcijom/kontrolerom/modulom. Za view koristi view helpere http://framework.zend.com/manual/en/zend.view.helpers.html
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

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



+33 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 21:49 - pre 167 meseci
Čim imaš potrebu za takvim nečim, onda tu nešto ne valja u samoj koncepciji tvoje aplikacije, ali ako baš mora tako, ovo je jedan od načina za dohvatanje one glavne konfiguracije, koju prosleđuješ Zend_Application-u, bilo gde u kôdu:
Code:
$config = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOptions();

U tom nizu $config sad imaš pristup svim konfiguracionim parametrima.
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 22:10 - pre 167 meseci
Pa mozda nije najsrecniji nacin, ali to mi je prvo palo na pamet. Evo da pojasnim.

Parametar koliko ce necega (slika, pesama...) biti na pocetnoj strani je potreban u kontroleru tj. modelu za limit (query).
Onda iz admin panela ukljuciti ili iskljuciti neki element (obican div sa nekim sitnicama unutra) na nekoj strani. Taj parametar je potreban u view.

Sve to treba da bude pregledno i lako editovano preko nekog formulara. Ini odogovara ali pozeljno je da bude odvojen od onog pocetnog. Samo je pitanje kako je najbolje da parametri stugnu u kontroler i view.

Mozda postoji neko bolje resenje za ovo?
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

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



+33 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 22:21 - pre 167 meseci
Nisam baš najbolje razumeo taj deo sa admin panelom, ali uglavnom, ti tu tvoju custom ini konfiguraciju možeš da wrap-uješ u Zend_Config_Ini objekat, i onda taj objekat da ubaciš u Zend_Registry. Sve to bi radio u nekom metodu tvoje bootstrap klase, npr.:
Code:
protected function _initCustomConfig()
{
    $config = new Zend_Config_Ini('/putanja/do/custom_config.ini');
    Zend_Registry::set('customConfig', $config);
}

I onda posle bilo gde u kôdu (kontroler, view script) imaš:
Code:
$customConfig = Zend_Registry::get('customConfig');
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: ZF - Problemi i diskusija21.07.2010. u 23:36 - pre 167 meseci
Odlicno, izgleda da je to to. :) Tnx.

A to za admin, pa pojasnicu ako mozda postoji neko drugo resenje, mada sam i sa ovom zadovoljan. Dakle, form u admin panelu u koji se unosi recimo koliko ce komentara da bude prikazano za neku pesmu/sliku (sta god..), zatim koliko rezultata u pretrazi da se prikazuje i jos neke korisnije stvari. Znaci neki parametri za koje je pozeljna mogucnost lake izmene, a neophodni su na vise lokacija u aplikaciji.

Ali, kao sto rekoh i ovo je dovoljno dobro za mene osim ako se neka druga metoda primenjuje bas po standardima zend-a?
 
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 - Problemi i diskusija22.07.2010. u 09:57 - pre 167 meseci
A gde ti upisuješ podešavanja iz te fome u admin panelu? U bazu ili direktno u taj .ini fajl? Ako ih upisuješ u .ini, onda je ovo što sam predložio sasvim dobro rešenje.
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: ZF - Problemi i diskusija22.07.2010. u 11:12 - pre 167 meseci
Sta mislis, sta je bolje?
Prvo je bilo u bazi, ali cini mi se da ce malo brze pristupati ako je ini. Nekada je konekcija ka bazi uzasno spora, a uz to vec imam dosta upita, tesko da se tu nesto moze optimizovati.

Ovako kako je sad, upisuje se direktno u ini a moguce da ce postojati jedna tabela pa kesirati i osvezavati svaki put kada se nesto promeni.
 
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 - Problemi i diskusija22.07.2010. u 12:32 - pre 167 meseci
Pa ne znam, u principu je svejedno. Meni je nekako logičnije da se podešavanja drže u bazi, mada što da ne, može i .ini fajl da se korisiti u te svrhe. Ako te brinu performanse, ti ćeš i u slučaju da su podešavanja u bazi raditi istu onu priču sa Zend_Registry-jem, odnosno, samo jednom u okviru zahteva (npr. u bootstrap-u) ćeš se obraćati bazi kako bi dohvatio sva podešavanja, a onda bi taj rezultujući niz sa podešavanjima smestio u registry.
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: ZF - Problemi i diskusija22.07.2010. u 12:39 - pre 167 meseci
Da to definitvno. Nisam mislio svaki put da pitam bazu. :)
Kontao sam da je dohvatanje tih podatak mozda brze ako je u fajlu nego u bazi. Ali to je tu i tamo relativno jer zavisi od servera i od toga sto treba parsirati ini. Verovatno cu ako me ne bude mrzelo napraviti tabelu i srediti kesiranje pa da cita iz fajla a iz baze samo jednom kada bude promena pa da osvezi kes.
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: ZF - Problemi i diskusija25.07.2010. u 16:36 - pre 167 meseci
Jedno,dva pitanja oko onoga "Skinny Controller, Fat Model"

Recimo da imamo kontroler gde treba da se uradi par upita(INSERT, REPLACE INTO..)
Koji je razlog da kontroler ne bude "Fat",(sta je kriterijum kad kontroler postaje "Fat" ?), a model "Skinny"(a mozda i da ga uopste nema), jer sve moze ovako da se zavrsi:

Code:

$db = Zend_Db_Table::getDefaultAdapter();

$db->insert('table',$values); //radim INSERT
$db->query("REPLACE INTO ...") // radim REPLACE INTO

Koja je prednost toga da napravim model koji ce da prosiri Zend_Db_Table pa da radi to isto, samo pre toga umesto da dovucem def. db. adapeter, napravim novi
objekat konkretnog modela. Prednosti koje vidim su te da bih sklonio sebi sa ociju iz kontrolera ovaj ruzni REPLACE INTO upit od nekoliko linija koda u model, tj. da napravim metodu,u kojoj bi se on izvrsavao, pa bih u kontroleru imao samo poziv te metode sa jednim parametrom. I jos eto mogao bih da uradim Caching Table Metadata mada ni to ne znam jel se dobija nesto sa tim u odnosu na rad samo ovako sa Zend_Db_Table na nacin koji sam naveo?

 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: ZF - Problemi i diskusija25.07.2010. u 17:16 - pre 167 meseci
U teoriji, u modelu treba da se sadrzi "bussiness logic" a ne samo interfejs ka DB sloju, a kontroler je tu da odabere koja logika treba da se primeni za konkretan request. U praksi ljudi obicno drze samo DB u modelu.

Ja se trudim da mi kontroler bude samo "raskrsnica" koja ce ispitati request i pozvati odgovarajucu logiku iz modela.
Na stranu sto je kratak kontroler brz za ucitavanje i parsiranje pa ne davim CPU viskom koda.
Na taj nacin mi je kontroler jednostavan za pracenje, a model ako postane previse 'fat' onda ga rasteretim tako sto izvucem krupnije metode u zasebne datoteke a u metode stavim samo jedno 'include'.

Primer prednosti ovakvog rada je kad se pojavi potreba da listu reg. clanova sa sajta exportujem u xml jednostavno copy/paste-ujem metod model koji to vec prikazuje na formi (a to mogu jer je u 'fat' modelu dovoljno izolovan od kontrolera) i dodam u kontroler poziv ka tom novom metodu. Poenta je u kolicini programerskog posla jer nemas potrebe da analiziras okolinu, sva potrebna logika je na jednom mestu, i gotovo za 1 minut.

Termin 'fat model' upravo to i oznacava - spajanje logike sa interfejsom ka DB sloju.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
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 - Problemi i diskusija25.07.2010. u 17:30 - pre 167 meseci
Pa ta paradigma je svakako nešto čime bi trebao da se vodiš, jer business logici jeste mesto u modelu, ali ne moraš po svaku cenu, zbog neke stvari za koju npr. znaš da je nećeš reuse-ovati nigde drugde osim u tom kontroleru, da praviš klasu koja bi čuvala samo taj jedan metod. E sad, ako je to neki insert nad jednom tabelom, onda je pametnije da, bar zbog sebe, za svaku tabelu u tvojoj aplikaciji imaš i table gateway modele (klase koje se izvode iz Zend_Db_Table), pa da ih onda po potrebi iskoristiš za tako neki insert, update, fetch, itd.

A to metadata keširanje koje si spomenuo nema nikakve veze sa prethodnim delom tvoga post-a. To keširanje je i te kako preporučljivo, ja bih čak svrstao u obavezne stvari, jer to i te kako utiče na performanse. U pozitivnom smislu, naravno. U suprotnom, svaki put kad praviš instancu nekog table gateway-a, i pri pokušaju npr. insert-ovanja podataka, biće izvršen _setupMetadata() metod (pogledaj kôd tog metoda), koji će u slučaju da metadata nije inicijalizovan ili ako se podaci za njega ne nalaze u cache, raditi "naporan" DESCRIBE upit, kako bi pokupio informaciju o kolonama u određenoj tabeli. Najbolja varijanta, naravno bolja i od keširanja, jeste da hardcode-uješ metadata te neke tvoje tabele, tako što ćeš u tvom izvedenom modelu redefinisati $_metadata promenljivu (u njoj se nalaze ti podaci o kolonama) i ručno uneti definiciju tvoje tabele, npr.:
Code:
class Model_DbTable_Foo extends Zend_Db_Table
{
    protected $_name = 'foo';
    
    protected $_primary = 'id';

    protected $_metadata  = array(
        'id' => array(
            'SCHEMA_NAME'      => null,
            'TABLE_NAME'       => 'foo',
            'COLUMN_NAME'      => 'id',
            'COLUMN_POSITION'  => 1,
            'DATA_TYPE'        => 'int',
            'DEFAULT'          => null,
            'NULLABLE'         => false,
            'LENGTH'           => 10,
            'SCALE'            => null,
            'PRECISION'        => null,
            'UNSIGNED'         => true,
            'PRIMARY'          => true,
            'PRIMARY_POSITION' => 1,
            'IDENTITY'         => true
        ),
        'title' => array(
            'SCHEMA_NAME'      => null,
            'TABLE_NAME'       => 'foo',
            'COLUMN_NAME'      => 'name',
            'COLUMN_POSITION'  => 2,
            'DATA_TYPE'        => 'varchar',
            'DEFAULT'          => null,
            'NULLABLE'         => false,
            'LENGTH'           => 100,
            'SCALE'            => null,
            'PRECISION'        => null,
            'UNSIGNED'         => null,
            'PRIMARY'          => false,
            'PRIMARY_POSITION' => null,
            'IDENTITY'         => false
        )
    );
}
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: ZF - Problemi i diskusija25.07.2010. u 19:38 - pre 167 meseci
@Miroslav

Heh, bas zato pitam jer u tom doticnom kontroleru i nema toga sto se naziva "bussiness logic", bar mislim da nema(kao na drugim mestima gde sam imao potrebu da pravim po koju dodatnu proveru i sl. unutar modela) Evo sta se jedino desava u tom kontroleru(RateController):

- prikupe se podaci (contentid,ip,grade)
- uradi se validacija (contentid se kastuje u int, ip se proveri dal je stvarno ip, grade se proveri jel izmedju 1 i 5 i to je to)
- ako su podaci dosli preko AJAX-a radi se insert, i select(da bi vratio JSON objekat sa novim vrednostima)
- ako su podaci dosli standardno radi se insert i redirect na stranu odakle je glasano

I ovaj kod koristim samo na tom mestu i nigde vishe.
Ne kazem da sam pomislio da treba praviti debele kontrolere, citao sam ja ovaj odlican clanak Model ali posto je ceo kontroler sa dve akcije stao u 70 linija , a nema biznis logike koja bi se ticala samog modela, pomislio sam sta da uradim


@Nikola
..Ovo za kesiranje se nisam izrazio izgleda dobro.. Al nema veze , napisao si to sto me je interesovalo, i odlucilo da radim tako za prakticno sve tabele

Dal mozete da kazete sta mislite o ovoj logici za kontroler, kad sam ga vec pomenuo.
Naime imam vise sadrzaja koje se mogu ocenjivati, sa vise razlicitih stranica,
pa sam sa one dve poslednje stavke to resio, interesuje me misljenje za onaj redirect ?
 
Odgovor na temu

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

Strane: << < .. 2 3 4 5 6 7 8 9 10 11 ... Dalje > >>

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

Postavi temu Odgovori

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