Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CI] Idea MVC pytanie
Forum PHP.pl > Forum > PHP > Frameworki
masahuku
Witam,

Właśnie jestem w trakcie przesiadania się z trybu klepania kodu z palca na framework CI. Jednak strona, która miała pecha być pierwszą którą w tej technologii wykonam urodziła mi pewne pytanie... Jest to strona sklepu, wiadomo że po prawej stronie kategorie, po lewej produkty itp. Mam stworzone modele zarówno do kategorii jak i do produktów jednak nie wiem jak inaczej niż w "głównym" kontrolerze pokazać wyniki na JEDNEJ stronie. Moje obecne rozwiązanie (działa ale nie wiem czy to nie burzy koncepcji MVC)
EDIT::

Tak sie rozpisałem że zapomniałem napisać jak rozumiem MVC smile.gif. Zgodnie z "rysunkami" każdy kontroler ma jeden model i jeden widok. Czy relacje jeden kontroler do wielu modeli/widoków nie psuje tego ? Wiem że kontrolery nie mogą (nie powinny) z siebie wzajemnie korzystać.

KONTROLER MAIN

  1. function Main() {
  2. class Main extends Controller {
  3.  
  4. parent::Controller();
  5. $this->response = array();
  6. }
  7.  
  8. function index()
  9. {
  10. // Wczytanie produktów
  11. $this->load->model('Products_model');
  12. $query = $this->Products_model->get_products();
  13. $content='';
  14. $content_side='';
  15. if($query->num_rows() > 0)
  16. {
  17. foreach($query->result() as $item)
  18. {
  19. $content .= $this->load->view('news_loop', $item, True);
  20. }
  21. }
  22. $this->response['content'] = $content;
  23. // Wczytanie kategorii
  24. $this->load->model('Category_model');
  25. $query_side = $this->Category_model->get_categories();
  26. if($query->num_rows() > 0)
  27. {
  28. foreach($query_side->result() as $item)
  29. {
  30. $content_side .= $this->load->view('categories_loop', $item, True);
  31. }
  32. }
  33. $this->response['content_side'] = $content_side;
  34. $this->load->view('index', $this->response);
  35. }


MODEL PRODUCTS (wiem ze powinno byc w liczbie poj. tongue.gif)

  1. <?php
  2.  
  3. class Products_model extends Model {
  4.  
  5. function Products_model()
  6. {
  7. parent::Model();
  8. }
  9.  
  10. function get_products()
  11. {
  12. $this->load->database();
  13. return $this->db->get('products');
  14. }
  15.  
  16. function get_products_by_id($id)
  17. {
  18. $this->load->database();
  19. $query = $this->db->where('product_id', $id);
  20. return $this->db->get('products');
  21. }
  22. }
  23. ?>


MODEL CATEGORY

  1. <?php
  2.  
  3. class Category_model extends Model {
  4.  
  5. function Category_model()
  6. {
  7. parent::Model();
  8. }
  9.  
  10. function get_categories()
  11. {
  12. $this->load->database();
  13. return $this->db->get('categories');
  14. }
  15. }

?>

Oczwiście do produktów i kategorii mam porobione loopy które potem przerzucam do index.php który wygląda tak:

  1. .left_side {
  2. float: left;
  3. width: 250px;
  4. }
  5. .center_side {
  6. width: 800px;
  7. float: left;
  8. }
  9. <h1>xxxr</h1><br/>
  10. <hr>
  11. <div class=left_side>
  12. <ul>
  13. <?php
  14. echo $content_side;
  15. ?>
  16. </ul>
  17. </div>
  18. <div class=center_side>
  19. <?php
  20. echo $content;
  21. ?>
  22. </div>


Czy jest to rozwiązanie "po bożemu" czy jakoś inaczej powinienem to rozwiązać ? Latałem po tutkach z CI ale tam nie spotkałem się z wyświetlaniem 2 danych z różnych modeli. Jeśli jest dobrze to rozumiem stworzenie kontrolerów osobnych dla Produktów i Kategorii będzie realizowało zadania w stylu dodaj/usun/znajdz ?
Z góry dziękuję za pomoc.
szok
Zainteresuj się tym:
http://codeigniter.com/wiki/layout_library/
Layouty jak w cakephp, świetna rzecz, robisz jeden główny szablon strony i potem tylko wymieniasz treści, możesz również zmieniać laypouty w locie itp smile.gif

Chyba o to ci chodzi? Z tym jednym widokiem dla każdego kontrolera?
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.