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

Symfony FW + Doctrine

[es] :: PHP :: Symfony FW + Doctrine

[ Pregleda: 2062 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Symfony FW + Doctrine19.11.2010. u 12:00 - pre 163 meseci
Znam da symfony sam kreira admin kontrolere i klase za forme, nije frka. Gledao sam more klipova, ali ima par problema:

1. kako zapravo izgleda generisani admin kontroler? Nijedan video snimak nije pokazao da li je to 2 linije ili 200 linija koda
2. klasa za formu; symfony na osnovu opisa modela generise tu klasu. E sad; moji modeli imaju ekstra validaciju gde mi samo opis kolone nije dovoljan. Konkretan primer; klasa Property ima svoju adresu. Nakon validacije polja, pozove se googlemaps da se utvrdi lokacija i tek ako je i to validno, objekat se snima. U protivnom, vraca error. Ovo je samo jedan od primera, ima tu jos jedno 3-4 dodatne validacije samo za klasu Property.
3. klasa za formu; koliko zapravo ja imam kontrolu kako ce taj rezultat da izgleda? Primer: imam template koji mi se MNOGO svidja. Da li mogu naterati tu klasu da generise HTML prema tom templatu? Znaci da ne moram rucno da je menjam, ne zelim to da radim svaki put kad promenim relacije u bazi (radim samo velike programe)
4. kad model u pre/post Validate metodi uradi neku dodatnu validaciju (kao gornji primer za googlemaps), ja u toj metodi uradim $this->getErrorStack()->add('bad_address', '...') i posle to mogu da ispisem u view da adresa nije nadjena ovim:
Code:

if ( !$property->isValidField('bad_address') )
  echo 'Adresa nije nadjena' ;

Kako se to radi u Symfony FW-u? Da li opis greske moze da ostane u view delu, tj. da se ne definise u modelu (duga prica zasto)?
 
Odgovor na temu

taksistaZR
zrenjanin

Član broj: 124170
Poruke: 80
*.dynamic.isp.telekom.rs.



Profil

icon Re: Symfony FW + Doctrine19.11.2010. u 16:11 - pre 163 meseci
Citat:
mitke013:
1. kako zapravo izgleda generisani admin kontroler? Nijedan video snimak nije pokazao da li je to 2 linije ili 200 linija koda


Pogledaj u cash folderu. Ti svaki od tih kontrolera mozes da prosirujes ili menjas u svom modulu ako ti je potrebno.


Citat:
mitke013:
2. klasa za formu; symfony na osnovu opisa modela generise tu klasu. E sad; moji modeli imaju ekstra validaciju gde mi samo opis kolone nije dovoljan. Konkretan primer; klasa Property ima svoju adresu. Nakon validacije polja, pozove se googlemaps da se utvrdi lokacija i tek ako je i to validno, objekat se snima. U protivnom, vraca error. Ovo je samo jedan od primera, ima tu jos jedno 3-4 dodatne validacije samo za klasu Property.


Ti za svoja polja mozes da postavis validatore neovisno o tvom modelu. Mozes da kombinujes vise validatora, dodajes svoje validatore i sve ostalo sto ti je potrebno.
Konkretno gornji primer ako nemas potrebu za pravljenjem novog validatora brzu dodatnu validaciju mozes mozes da uradis ovako
Code:

// lib/form/xxxForm.class.php
public function configure()
{
    // set widget, validators ...
    // ...
    $this->mergePostValidator(
            new sfValidatorCallback(array('callback' => array($this, 'postChecks')))      
    );
}
public function postChecks($validator, $values)
{      
    $errors = array();

    if ( !empty($values['username']) )
    {
      //check some data
        // ...
      $errors['email'] = new sfValidatorError($validator, 'Some custom error');    
        $errors['link'] = new sfValidatorError($validator, 'Some custom error2');        
     }
                              
    if ( count($errors) > 0)
    {
         throw new sfValidatorErrorSchema($validator, $errors);
    }

    return $values;
}



Citat:
mitke013:
3. klasa za formu; koliko zapravo ja imam kontrolu kako ce taj rezultat da izgleda? Primer: imam template koji mi se MNOGO svidja. Da li mogu naterati tu klasu da generise HTML prema tom templatu? Znaci da ne moram rucno da je menjam, ne zelim to da radim svaki put kad promenim relacije u bazi (radim samo velike programe)


Kustomizaciju forme radis u fajlu xxxForm.class.php a prilikom generisanja formi menja se fajl u base folderu BasexxxForm.class.php . Na taj nacin zadrzavas prethodne izmene nakon promene modela i ponovnog generisanja formi.

Ako si mislio na pojedinacni prikaz polja dodajes potrebne atribute u widgets u samoj form klasi
Code:
'username' => new sfWidgetFormInput(array('class' => 'foo'))

ili u view delu
Code:
echo $form['username']->renderRow(array('class' => 'foo', 'size' => 30)) 

Ako hoces mozes da pretocis odredjeni prikaz formi u template pomocu sfWidgetFormSchemaFormatter klase


Citat:
mitke013
4. kad model u pre/post Validate metodi uradi neku dodatnu validaciju (kao gornji primer za googlemaps), ja u toj metodi uradim $this->getErrorStack()->add('bad_address', '...') i posle to mogu da ispisem u view da adresa nije nadjena ovim:
Code:

if ( !$property->isValidField('bad_address') )
  echo 'Adresa nije nadjena' ;

Kako se to radi u Symfony FW-u? Da li opis greske moze da ostane u view delu, tj. da se ne definise u modelu (duga prica zasto)?


Ti mozes da napravis custom funkciju u form klasi pa da je pozoves iz viewa sa $form->myCustom() ali nema svrhe za tim kad ti form klasa odradjuje sve sto ti treba. U mom gornjem primeru validacije automatski se dodaje error poljima 'email' i 'link' i ispisuje u viewu.
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Re: Symfony FW + Doctrine19.11.2010. u 17:18 - pre 163 meseci
Hvala, pogotovo na primerima koda. Videcu da to proucim sto pre. Koliko je otprilike potrebno vremena da se savlada Symfony? Kao poredjenje uzmi da mi za Doctrine trebalo oko 7 dana za osnovni rad (bez listenera, behavioura, migracija...)
 
Odgovor na temu

taksistaZR
zrenjanin

Član broj: 124170
Poruke: 80
*.dynamic.isp.telekom.rs.



Profil

icon Re: Symfony FW + Doctrine19.11.2010. u 17:59 - pre 163 meseci
Ne mogu da se bavim procenama koliko je potrebno vremena da se nauci, to ipak zavisi od mnogo stvari.

U principu ima veoma prirodan MVC tu nebi trebalo da bude nekih vecih problema. Ima dobro development okruzenje koje ti pomaze u debagovanju pa polako... korak po korak. Rad sa formama i admin generator su ogromna poglavlja u simfoniju to se ne moze nauciti na brzinu. Bitno je za pocetak da pohvatas logiku kako funkcionise pa ces polako kroz praksu videti blagodeti svega toga.
 
Odgovor na temu

spezia

Član broj: 134818
Poruke: 355
*.dynamic.isp.telekom.rs.



+6 Profil

icon Re: Symfony FW + Doctrine19.12.2010. u 11:35 - pre 162 meseci
Hmmm...
Gledao sam malo symfony i ono sto me nervira je po malo zbunjujuca dokumentacija... Posle sam cuo da je za 1.2 bolje objasnjeno.
Gledajuci po forumima negde ga hvale da spasava glavu , negde kritikuju da je tezak za ucenje... pa ga dosta ljudi izbegava i obicno se okrece CodeIgniteru.
Da li moze neko poredjenje u odnosu na CI, ili neki drugi framework, tacnije zasto izabrati symfony?? Koje olaksice dobijam sa njim?
Vidim da se dosta koristi konzola, malo cudno u odnosu na ostale...
 
Odgovor na temu

taksistaZR
zrenjanin

Član broj: 124170
Poruke: 80
*.dynamic.isp.telekom.rs.



Profil

icon Re: Symfony FW + Doctrine20.12.2010. u 19:28 - pre 162 meseci
Dobijas komande u konzoli da se zlopatis sa njima i cudne yaml fajlove :)
Ipak, nije sve crno kao sto izgleda na prvi pogled.

Dokumentacija u pocetku moze da deluje zbunjujuce posto je veoma opsirna. Kroz praksu dolazis do toga da uglavnom koristis samo nekoliko komandi koje ti brzo udju u prste i onda nije toliko komplikovano kao sto izgleda a dobija se mnogo.


Koriscenjem tih komandi iz konzole dobijas automatsko generisanje klasa za rad sa tabelama, formama, sql fajlove, module, crud metode, admin deo i jos mnogo toga.

Posebna stavka symfonyja je njegov admin generator koji na osnovu modela izgenerise veoma mocan administracijski deo koji pored klasicne liste prikaza podataka i osnovnih crud funkcija ima i filtere za pretragu, sortiranje podataka po kolonama, paginaciju i jos dosta toga dobijas osnovnim generisanjem a posle mozes menjati ili prosiriti celu pricu prema potrebi.

Pored toga, dobijas sjajno developement okruzenje u kojem mozes da vidis sve sto ti je potrebno, od gresaka, sql upita, request parametara, sesija, konfiguracijskih vrednosti, view layera do vremena izvrsenja, utrosene memorije i ostalih stvari za optimizaciju i debug.

Ima jos korisnih stvari kao sto su ajax support, kesiranje podataka, automatski unit testovi itd.


Ukratko, koriscenjem symfony fw dobija se jedno stabilno, snazno okruzenje za rad sa mnogo automatizovanih opcija generisanja kroz konzolu i config. fajlove.
Ja koristim sf dugo ali ne mogu da kazem za sebe da sam iskoristio 100% mogucnosti fw koje mi se nude. Zbog toga je i nemoguce odgovoriti na pitanje koliko je potrebno vremena da se neki fw nauci. Osnovne stvari se mogu savladati kao i kod bilo kojeg drugog sf, jedino malo treba poraditi na admin generatoru i tim komandama konzole da se izvuce ono najvaznije za pocetak jer to je drugacije u odnosu na druge fw kao sto kazes. Ostalo su samo finese, koje ti olaksavaju i ubrzavaju rad onoliko koliko ih savladas. Nadam se da sam uspeo da ti docaram neke prednosti sf, ako sam nabrojao nesto sto postoji u ci nemoj zameriti posto samo povrsno poznajem code igniter.
 
Odgovor na temu

[es] :: PHP :: Symfony FW + Doctrine

[ Pregleda: 2062 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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