Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] czy tak ma wyglądać model?
terabit
post
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 4
Dołączył: 11.08.2006

Ostrzeżenie: (10%)
X----


Witam,

tak sobie grzebie na forum, szukam różnych ciekawych rzeczy o kohanaphp...
no i znalazłem coś takiego: http://phpfi.com/327959 w temacie http://forum.php.pl/index.php?s=&showt...st&p=487669
i się zastanawiam czy właśnie tak powinien wyglądać model? Tyle ifów i nawet jakies komunikaty:
  1. <?php
  2. $message = 'Witaj '.$display_name.'<br/><br/> Zarejestrowa?e? si? w serwisie '.config::item('config.custom_page_domain').'. Aby aktywowa? konto kliknij w poni?szy link:<br /><br />'.html::anchor('authentication/activate/'.$activation_key, 'Aktywuj Konto').'<br /><br/>'.url::site('authentication/activate/'.$activation_key).'<br /><br />Wiadomo?? wygenerowana automatycznie. Prosimy na ni? nie odpowiada?.';
  3. ?>


Myślałem że takimi rzeczami zajmują się metody controllera...

Czy tak powinno się to robić?

Ten post edytował terabit 11.08.2008, 21:50:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(terabit @ 11.08.2008, 23:16:08 ) *
wiec wedlug mnie pobinien byc w kontrolerze i przekazywany do widoku gdy bedzie taka potrz


Wiesz, boli mnie jak widzę też interpretację Widoku w MVC serwowana przez frameworki :/

  1. <?php
  2. // w akcji
  3. if(($list = $model->getList()) !== null) {
  4. $this->view->set('list', $list);
  5. } else {
  6. $this->view->set('error', 'Nie znalezione');
  7. $this->vie->setTemplate('Error');
  8. }
  9. ?>


W sumie wtedy można powiedzieć, że robisz to w kontrolerze.
W Agavi natomiast widok to zupełnie inna sprawa, każdy rodzaj widoku to osobna klasa, ze swoją logiką i metodami.

  1. <?php
  2. // w akcji
  3. try {
  4. if(($list = $model->getList()) !== null) {
  5. $this->setAttribute('list', $list); // przekazuje dane do widoku.
  6. return 'List'; // a widok juz sie zajmie tym i albo wypluje html, albo json, albo coś jeszcze inn
    ego
  7. } else {
  8. return 'NotFound'; // nie znalezione -> tam komunikat
  9. }
  10. } catch (Exception $e) {
  11. // model rzucił błędem
  12.  return 'Error'; // tam komunikat, że wystąpił błąd
  13. }
  14. ?>


Cytat(terabit @ 11.08.2008, 23:23:42 ) *
<?php
foreach($query as $row)
{
$this->session->set('isLogin', TRUE);
$this->session->set('id', $row->user_id);
$this->session->set('login', $row->user_name);
$this->session->set('email', $row->user_email);
$this->session->set('lastvisit', $row->user_last_login);
$this->session->set('role', $row->role_id);
$this->db->from('users');
$this->db->set(array('user_logins_count' => $row->user_logins_count+1, 'user_cookie_key' => $cookie_key, 'user_last_ip' => $this->input->ip_address(), 'user_last_login' => mktime()));
$this->db->where(array('user_id' => $data[0], 'user_cookie_key' => $data[1]));
$this->db->update();
?>[/php]
oczywiście troszkę inaczej... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


To już robisz jak chcesz, teoretycznie model powinien zamknąć w sobie całość działania aplikacji, więc kod powyżej się nie kłoci z tym.
W agavi (jak i w Symfony) istnieje obiekt sessionUser, w którym w odpowiedniej metodzie inicjalizacyjnej uruchamiam model użytkownika, pobieram dane i ustawiam wartości zmiennych sesji. Ale jakby tego nie było, prawdopodobnie bym użył modelu.

Ten post edytował LBO 11.08.2008, 22:46:34
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 - 03:51