Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] kontrola danych w kontrolerze, czy modelu
MarcinGDA21
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.04.2011

Ostrzeżenie: (0%)
-----


witam,

wysylam formularzem dane do kontrolera i tam mam dwie mozliwosci 1 przeslac cala tablice POST do modelu i zalaczyc widok, albo 2 w kontrolerze odczytac dane z POST, zrobic np stripslashes itp i wtedy juz gotowe wyslac do modelu i zalaczyc widok.
ktora opcja jest poprawna w modelu MVC?


a drugie pytanie przy okazji wiazace sie z tym. jesli bym to robil w kontrolerze i chcialbym wczytac jakas funkcje z zewnetrznego pliku to w ktorym miejscu ja includowac?
  1. class Controller {
  2.  
  3. function index(){
  4.  
  5. }
  6.  
  7. function form(){
  8. include '/test/funkcja.php';
  9.  
  10. $dane = funkcja($dane);
  11. }
  12.  
  13. }

tak jest poprawnie czy moze musze to zrobic w kontruktorze? co jesli bym chcial ja uzyc w dwoch metodach?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Inscure
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

Ostrzeżenie: (0%)
-----


W tym wypadku helper posiadałby cechy modelu jak dobrze rozumiem? Tylko że modelu innego obiektu.
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat(Inscure @ 30.04.2011, 21:36:40 ) *
W tym wypadku helper posiadałby cechy modelu jak dobrze rozumiem? Tylko że modelu innego obiektu.

Można tak do tego też podejść. W gruncie rzeczy formularz też może być obiektem jakiejś klasy i cała operacja walidacji sprowadza się wtedy do wywoływania odpowiednich metod na przekazanych jako parametry obiektach, przykładowo:

$Form ( formularz, obiekt klasy Form ) -> przekazujemy jako argument do klasy Helper, ona sobie tam nad nim pracuje, waliduje i zwraca już obrobiony formularz do kontrolera.
Ten z kolei zwalidowany obiekt $Form przesyła do modelu, który przyjmuje go jako argument i po "rozłożeniu" na czynniki pierwsze (pola w bazie danych odpowiadające wypełnionym polom formularza) zapisują do bazy i zwracają rezultat operacji.

Czyli w uproszczeniu kontroler wyglądałby tak:

  1. ...
  2. $Form->bind( [dane_z_posta] );
  3. if ( $Helper->isValid( $Form) ) {
  4. $result = $Model->save( $Form );
  5. if ( $result ) {
  6. $View->message( 'Zapisano poprawnie');
  7. } else {
  8. $View->message('Oj, błąd :( ');
  9.  
  10. } else {
  11. $View->message('Popraw błędy w formularzu:');
  12. $View->errors = $Helper->getErrors();
  13. $View->form = $Form ( [dane_z_posta] );
  14. }
  15. .....


Tak w uproszczeniu (IMG:style_emoticons/default/wink.gif)


BTW, dokładnie na takiej zasadzie działają typowe MVC, jak Symfony czy Zend.
Powód edycji: [blooregard]:
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 15:23