Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CI] Strona głowna i podstrony
Forum PHP.pl > Forum > PHP > Frameworki
Que
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?
nrm
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.