Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CI] Strona głowna i podstrony
Que
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.09.2007

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


Witam,

Mam pewne wątpliwości - normalnie jeśli miałbym wyświetlać wszystko w jednym miejscu ($content) używając widoku index.php było by ok, ale niestety - moja sytuacja jest inna - na głownej chce wyswietlic newsy, ostatnio dodane, polecane - czyli trzy bloki - a nie tak jak na podstronach jeden, jak byście to zrealizowali?
Ja narazie ide pierwotnym tokiem myślenia:

  1. <?
  2. class Main extends Controller
  3. {
  4. // Konstruktor klasy main
  5. function Main()
  6. {
  7. parent::Controller();
  8. $this->response = array();
  9. Main::_news();
  10. Main::_last();
  11. Main::_polecamy();
  12. }
  13.  
  14. function _last()
  15. {
  16. $this->load->model('Books');
  17. $query = $this->Books->get_last_books();
  18. $last = '';
  19. if($query->num_rows() > 0)
  20. {  
  21. foreach($query->result() as $row)
  22. {
  23. $last .= $this->load->view('last_books', $row, TRUE);
  24. }
  25. }
  26. else
  27. {
  28. $last .= '<h1 class="ostatnio_dod">Brak ebookow</h1>';
  29. }
  30.  // Przekazanie danych do szablonow
  31.  $this->response['last'] = $last;
  32.  
  33. }
  34. function _news()
  35. {
  36. $news = '';
  37. $this->load->model('News');
  38. $cos = $this->News->get_news();
  39. if($cos->num_rows() > 0)
  40. {
  41. // akcja podejmowana jesli newsow jest > 0
  42. foreach($cos->result() as $row)
  43. {
  44. $news .= $this->load->view('news_loop', $row, TRUE);
  45. }
  46. $this->response['news'] = $news;
  47. }
  48. else
  49. {
  50. $news .= '<h1 class="ostatnio_dod">Brak newsow</h1>';
  51. }
  52. }
  53. function _polecamy()
  54. {
  55. $polecamy = '';
  56. $this->load->model('Books');
  57. $query = $this->Books->polecamy();
  58. foreach($query->result() as $row)
  59. {
  60. $polecamy .= $this->load->view('polecamy', $row, TRUE);
  61. }
  62. $this->response['polecamy'] = $polecamy;
  63. }
  64. function index()
  65. {
  66. $this->load->view('index', $this->response); 
  67. }
  68. }
  69. ?>


i cos mnie nie wychodzi, bo nie wiem jak ma wyglądać kontroler np podstrony, prosze o wszelkie porady, jak wy to robicie?, czy idę wogole w dobrym kierunku?, zrodla przykladowych aplikacji itd
- z góry dziękuje za wszystko:)

Przepraszam za takie banalne pytania - dopiero raczkuje.

Widok (index.php)
  1. <!-- content -->
  2. <div id="content">
  3. <div id="content-bottom">
  4. <?
  5. if(isset($last)){
  6. echo '<h1 class="ostatnio_dod">Ostatnio dodane</h1>'; 
  7. echo $last;
  8. echo '<div class="leng"></div>';
  9. } 
  10. ?>
  11. <?
  12. if(isset($news)){
  13.  echo '<h1 class="other orange">Nowości w serwisie <span>NAZWA</span></h1>';
  14.  echo $news;
  15.  echo '<div class="leng"></div>';
  16. }
  17. ?>
  18. <? 
  19. if(isset($book)){
  20. echo $book; 
  21. echo '<div class="leng"></div>';
  22. }
  23. ?>
  24.  
  25. </div>
  26. </div>
  27. <!-- koniec content -->


Na razie używam tej metody, macie może jakieś 'inne' pomysły?

Ten post edytował Que 1.11.2007, 12:55:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
nrm
post
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


Odpowiedziałem Ci na GG (o ile dobrze zrozumiałem problem) ale tutaj napisze coś więcej bo jak się przyjrzałem temu kodowi to się trochę przestraszyłem tej pisaniny winksmiley.jpg

przeróbka przykładowego news
  1. <?php
  2. function _news()
  3.  {
  4. $this->load->model('mNews');
  5. $newsy = $this->mNews->get_news();
  6. if($newsy)
  7. {
  8.  $data['news'] = $newsy;
  9. }
  10. else
  11. {
  12.  $data['error'] = 'Brak newsów';
  13. }
  14. $this->load->view('newsy',$data);
  15. }
  16. ?>


model w skrócie:
  1. <?php
  2. function get_news()
  3. {
  4. $sql = "costam";
  5. if($sql->num_rows() > 0)
  6. {
  7. return $sql->result();
  8. }
  9. else
  10. {
  11.  return FALSE;
  12.  }
  13. }
  14. ?>

- nie pchaj htmla do kontrolera lub modelu
- nie "foreach'uj" winksmiley.jpg wyników w kontrolerze (po co?)
- w kontrolerze steruj tylko przebiegiem
- jak chcesz składać sobie stronę z komponentów to porób sobie funkcje _jakisKomponent() która kończy załadowaniem $data do widoku, apotem funkcje takie grupuj sobie w danej metodzie
- na forum CIi na wiki jest dodatkowa biblioteka view, która polecam. Rozszerza ona trochę mozliwości wbudowanej i eliminuje trochę bezsensownych rozwiązań m.in. tablic i $this->load->vars().
-idę zjeść naleśniki... biggrin.gif

Ten post edytował normanos 1.11.2007, 12:58:13


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 10:54