|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor: |
|
Alati teme | Način prikaza |
29. 01. 2012. | #11 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Mislim da ovde malo mešaš babe i žabe, tj. poistovećuješ "debljinu" sa brojem linija. To što kontroler ima više linija koda od modela ne znači da je "deblji". Pored toga, različiti frejmvorci (i različiti jezici) pružaju mogućnost da se neki kod piše kraće, imaš mogućnost da koristiš razne helper metode itd, tako da isti taj tvoj primer kontrolera:
Kôd:
public function indexAction() { $month = $this->_request->getParam('month'); $year = $this->_request->getParam('year'); $day = $this->_request->getParam('day'); // obrade se podaci i kreira ispravan format datuma $date // eventualno se po potrebi pozovu jos neke funkcije i odrade upiti $event_model = new Application_Model_Event(); $this->view->events = $event_model->getEvents($date); } Kôd:
def index date = Time.parse(params[:date]) @events = Event.get_approved(date) end To takođe zavisi i od toga kako si nazvao i organizovao form elemente, kako si osmislio rute itd, dosta tog "plumbinga" u kontroleru načelno može da se izbegne.
__________________
blog |
"Hvala" jablan za poruku: |
29. 01. 2012. | #12 |
Goran Pilipović
Sir Write-a-Lot
|
Može neko objašnjenje zašto nikako POST u model? Gde vi radite preveru i sanitizaciju podataka iz POST-a, u kontroleru?
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
29. 01. 2012. | #13 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Ne znam šta ti je to "sanitizacija". Konvertovanje parametara iz stringova u štagod treba modelu (npr u datum) obavljam u kontroleru. Logičku validaciju podataka vrši model.
__________________
blog |
29. 01. 2012. | #14 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Ja uglavnom 90% validacije obavljam u kontroleru, jer ako neki podatak nije validan i treba da se izbaci greska sto bi uopste skripta ulazila u metodu iz modela.
|
29. 01. 2012. | #15 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Sto se tice slanja $_POST u model, radio sam na kodu gde je slucaj ovakva:
Polja na formi se nazovu isto kao i polja u bazi, i tako da kad se post prosledi modelu moze odmah da se uradi insert(selekt i dr.) jer je niz koji je key => value vec u postu. Sve je secure tu nema sta, al jednostavno nisam za to, jer potencjalni napadac moze da izvuce koliko toliko semu baze, jeste da ne moze nista al mi se to ne svidja. Ako neki junior sutradan treba da nesto dodaje/oduzme radice copy-paste i moguce da ce negde da zajebe nesto. Citljiviji mi je kod ako u kontroleru pripremim post i samo odredjene parametre prosledim u model. |
29. 01. 2012. | #16 | |
član
Certified
Datum učlanjenja: 03.10.2006
Poruke: 96
Hvala: 27
44 "Hvala" u 26 poruka
|
Citat:
Sve ostalo skoro 99% sam siguran vodi ka ruznom kodu i izuzetno smanjenom re-usabilitiju. Validacija u kontroleru mi ima smisla samo ako se radi o nekoj app-wide vrednosti koja nije konkretno vezana za neki model koji ce kasnije postati record u bazi. |
|
29. 01. 2012. | #17 | |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Zar ne bi onda bas zbog toga validaciju prepustio kontroleru da ne bi u modelu morao da pises
if(datum1){validacija 1}else{validacija 2} Citat:
Zend koji ima svoju klasu za forme i validacija toga se radi u kontroleru (koliko se secam tako je bilo i u drugim PHP FW). Poslednja izmena od tasmaniski : 29. 01. 2012. u 17:36. |
|
29. 01. 2012. | #18 |
član
Certified
Datum učlanjenja: 03.10.2006
Poruke: 96
Hvala: 27
44 "Hvala" u 26 poruka
|
Kad kazes za Zend - radi se validacija da li mislis na nesto ovako u kontroleru (fiktivni kod ali ovako se slicno radi u Django-u) :
Kôd:
f = MyModelForm(request['POST']) f.validate() if f.is_valid(): MyModel(f).save() else: #prijavi gresku Ako mislis da code validate metode (u ovom slucaju) treba da pripada kontroleru - ne slazem se... mada mogu da zamislim frejmvork koji je tako koncipiran da validaciju vrsi u kontroleru ali mi se cini kao losiji pristup dizajnu od ovog... bar konceptualno. Mesanje ova dva pristupa je svakako lose. |
29. 01. 2012. | #19 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Da, bas tako (prvi primer)
Ok, jeste da validaciju vrsi funkcija forme 'validate' koja se samo poziva u kontroleru, al moja poenta je bila da se validacija podataka radi pre nego sto se posalju u model, sto bi onda dovelo na vracanje prvobitne teme "fat model skinny c. vs ..." U svakom slucaju je bolje koristiti ili jedan ili drugi pristup, mesanje nikako. |
29. 01. 2012. | #20 | |
član
Certified
Datum učlanjenja: 03.10.2006
Poruke: 96
Hvala: 27
44 "Hvala" u 26 poruka
|
Citat:
Samo ako zamislimo da forma ne postoji kao koncept i da se validate poziva iz konstruktora modela i ako ne uspe baca exception naprimer (sto je lagani refactoring) - onda cak i eksplicitno pripada modelu a ne kontroleru. Kontroler samo pokusa da napravi model sa POST podacima i javi rezultat. |
|
|
|