Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie odnośnie Controllera w MVC
CuteOne
post
Post #1





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Witam,

i z góry przepraszam moderację za ogólny temat wątku ale szczerze nie wiedziałem jak inaczej go nazwać. Otóż przyglądając się ostatnio budowie Zenda natknąłem się na dość nie zrozumiałą dla mnie "rzecz".

Najpierw kawałek kodu:
  1. // Źródło "http://www.karolnowicki.pl/zend-framework/artykul/pokaz/system-logowania-w-zend-framework/"
  2. public function loginAction()
  3. {
  4. $form = new Form_Login();
  5. $form->setAction('/uzytkownicy/login')
  6. ->setMethod('post');
  7. if ($this->_request->isPost() && $form->isValid($_POST)) {
  8. // pobieramy dane z formularza
  9. $data = $form->getValues();
  10. // pobieramy domyślny adapter bazy danych
  11. $db = Zend_Db_Table::getDefaultAdapter();
  12. // tworzymy instancję adaptera autoryzacji
  13. $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'email', 'haslo');
  14. // wprowadzamy dane do adaptera
  15. $authAdapter->setIdentity($data['email']);
  16. $authAdapter->setCredential(md5($data['password']));
  17. // sprawdzamy, czy użytkownik jest aktywny
  18. $authAdapter->setCredentialTreatment("? AND status = '1'");
  19. // autoryzacja
  20. $result = $authAdapter->authenticate();
  21. if ($result->isValid()) {
  22. // umieszczamy w sesji dane użytkownika
  23. $auth = Zend_Auth::getInstance();
  24. $storage = $auth->getStorage();
  25. $storage->write($authAdapter->getResultRowObject(array(
  26. 'id', 'email', 'imie', 'nazwisko', 'rola'
  27. )));
  28. return $this->_redirect('/');
  29. } else {
  30. $this->view->loginMessage = "Niepoprawny login lub hasło";
  31. }
  32. }
  33. $this->view->form = $form;
  34. }


Jak widać jest to akcja logowania w kontrolerze UzytkownicyController.php. Tu pojawia się moje pytanie czy w kontrolerze powinno się podawać hmm jak by to nazwać... dane statyczne(nie mylić ze static ;p) takie jak:

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'email', 'haslo')
$authAdapter->setIdentity($data['email']);
$authAdapter->setCredential(md5($data['password']));
$storage->write($authAdapter->getResultRowObject(array(
'id', 'email', 'imie', 'nazwisko', 'rola'
)));

Wiem, że pytanie prosto z księżyca ale ni jak mi to nie pasuje do wzorca MVC gdzie kontroler "Odpowiedzialny jest za przetwarzanie zadań i wywoływanie właściwej akcji lub widoku".

ps. wiem, że PHP'owskie FW nie implementują "prawdziwego" MVC ale czy to oznacza, że dopuszczalne jest pakowanie takich rzeczy do kontrolera?

Ten post edytował CuteOne 26.02.2012, 02:35:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


To, że MVC się w PHP nie przyjęło to jedno, a to że niby język miałby uniemożliwiać/mocno utrudniać jego użycie to drugie. Ja osobiście nie potrafię doszukać się żadnego specjalnego ograniczenia narzuconego przez samo PHP.
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Crozin @ 26.02.2012, 19:59:38 ) *
To, że MVC się w PHP nie przyjęło to jedno, a to że niby język miałby uniemożliwiać/mocno utrudniać jego użycie to drugie. Ja osobiście nie potrafię doszukać się żadnego specjalnego ograniczenia narzuconego przez samo PHP.


Więc odwrócę kota ogonem. Gdyby nie było żadnego utrudnienia, to w fw takich jak zf, czy sf; zaimplementowane byłoby raczej w miarę bardziej poprawne mvc, niż tak jak jest obecnie, czyli w większości przypadków mvp. Tak przynajmniej wygląda to od logicznej strony. Szczerze mówiąc, nie widzę sensu aby widok miał bezpośrednią komunikację z modelem i mógł się z nim komunikować dwustronnie.
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: 5.10.2025 - 11:28