Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CodeIgniter]Codeigniter wyjaśnienie model
mateuszstr1994
post 26.02.2018, 16:57:04
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 31.10.2014

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


Witam, zacząłem swoją przygodę z Frameworkiem Codeigniter, jestem początkujący. Przejdę do sedna, jeśli mam kontroler i potrzebuje pobrać dane z Bazy Danych korzystam z modelu. Niby proste ale problem leży w tym że w książce którą się wspieram model nosi nazwę kontrolera i wszystkie funkcje są deklarowane tam np. pobierz kategorie() a w kolejnym kontrolerze znów jest to samo, czyli ta sama funkcja zapisana w innym modelu. Czy nie lepiej jest stworzyć ogólny model na przykład Database_Query gdzie będą tylko zapytania i zwracane wyniki ?
Go to the top of the page
+Quote Post
markuz
post 26.02.2018, 16:58:44
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Nie, potem jak będziesz szukał metody która odpowiada za pobieranie kategorii to od razu będziesz wiedział do którego pliku zajrzeć.

Ew. pokaż kod.

Ten post edytował markuz 26.02.2018, 16:59:10


--------------------
Go to the top of the page
+Quote Post
mateuszstr1994
post 26.02.2018, 17:28:09
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 31.10.2014

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


Pozwolisz że zadam kolejne pytanie, otóż w Kontrolerze posiadam następujące metody: index - tu wywołuje za pomocą this pozostałe metody kontrolera(create_head,create_header, create_footer), create_head() - wywołuje widok odpowiedzialny za część strony head, create_header() - wywołuje kolejny widok zawierający kolejną cześć strony ... Czy taki podział ma sens ?
Go to the top of the page
+Quote Post
markuz
post 26.02.2018, 17:35:11
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Pokaż kod.


--------------------
Go to the top of the page
+Quote Post
mateuszstr1994
post 26.02.2018, 17:37:01
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 31.10.2014

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


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3.  
  4. class Homepage extends CI_Controller
  5. {
  6. public function index()
  7. {
  8. $this -> create_head();
  9. $this -> create_header();
  10. $this -> load -> view('footer');
  11. }
  12.  
  13. private function create_head()
  14. {
  15. $DataHead = array
  16. (
  17. 'title_page' => 'Moja Pierwsza Strona w CodeIgniterze',
  18. );
  19.  
  20. $this->load->view('head',$DataHead);
  21. }
  22.  
  23. private function create_header()
  24. {
  25. $this->load->model('homepage_model');
  26.  
  27. $ElementsHeader['InformationHeader'] = $this->load->view('header_elements/information-bar', NULL, TRUE);
  28. $ElementsHeader['MenuLogowanie'] = $this->load->view('header_elements/menu-logowanie.php', NULL, TRUE);
  29. $ElementsHeader['Search'] = $this->load->view('header_elements/search-form.php', NULL, TRUE);
  30. $ElementsHeader['BasketHeader'] = $this->load->view('header_elements/basket-header.php', NULL, TRUE);
  31.  
  32. $DataMenu = array
  33. (
  34. 'default_menu' => array ('Wszystkie Kategorie','Top100','Nowości','Dla Niej','Dla Niego','Promocje')
  35. );
  36.  
  37. $ElementsHeader['MenuHeader'] = $this->load->view('header_elements/menu-header.php', $DataMenu, TRUE);
  38. $this->load->view('header',$ElementsHeader);
  39. }
  40.  
  41. }


Ten post edytował mateuszstr1994 26.02.2018, 17:37:21
Go to the top of the page
+Quote Post
nospor
post 26.02.2018, 17:39:02
Post #6





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Cos przekombinowales. Kontroler nie powinien nic wiedziec o widokach a u ciebie az sie roi od ladowania roznych czesci widoku w kontrolerze. Kontroler co najwyzej powinien zaladowac widok danej akcji i to wszystko. Cala reszta po stronei widoku i jego szablonu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
markuz
post 26.02.2018, 17:39:55
Post #7





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Ok, widzę, że dopiero zaczynasz z PHP. Taki podział nie ma sensu ponieważ będziesz miał bardzo dużo powtórzeń - dla każdego kontrolera będziesz musiał tworzyć te metody. Dowiedz się czym jest dziedziczenie i wydziel je do nadrzędnej klasy np. MyController.


--------------------
Go to the top of the page
+Quote Post
nospor
post 26.02.2018, 17:41:05
Post #8





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Dowiedz się czym jest dziedziczenie
Chyba raczej co to jest MVC i oddzielnie widoku od reszty. No nie powiedz mi ze CI tego nie wspiera?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
markuz
post 26.02.2018, 17:46:44
Post #9





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


@nospor Jak pisałem w nim x lat temu to nie wspierał, teraz też widzę, że słabo ma z tymi widokami z docs. Możesz wczytać widok w widoku ale do tego nadrzędnego będzie trzeba przekazać wszystkie zmienne użyte w tym podrzędnym widoku.
Ja to rozwiązywałem własną metodą loadView w nadrzędnym kontrolerze która wczytyała nagłowek, stopkę itp. a w środku widok który chciałem.


--------------------
Go to the top of the page
+Quote Post
nospor
post 26.02.2018, 17:56:59
Post #10





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Niby jakis szablon mozna miec
https://code.tutsplus.com/tutorials/an-intr...iter--net-25648
a to tylko jedno z rozwiazan.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
markuz
post 26.02.2018, 19:26:39
Post #11





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Gdybym się uparł to mógłbym podpiąć jakieś symfonowe widoki razem z twigiem - ale autor działa na czystym CI i ma małą wiedzę jeszcze o PHP dlatego zaproponowałem dziedziczenie i wydzielenie tych metody do nadrzędnej klasy.

Ten post edytował markuz 26.02.2018, 19:39:58


--------------------
Go to the top of the page
+Quote Post
mateuszstr1994
post 26.02.2018, 22:14:54
Post #12





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 31.10.2014

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


Reasumując tworze kontroler o klasie np. Page, następnie ta klasa dziedziczy po CI_Controller a Kontroler odpowiedzialny za stronę główną, dziedziczy po klasie Page odpowiednie metody, dobrze rozumiem ?

Ten post edytował mateuszstr1994 26.02.2018, 22:17:28
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 Wersja Lo-Fi Aktualny czas: 16.04.2024 - 15:26