Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CodeIgniter] base MY_Controller problem
jacobson
post 13.05.2011, 09:45:26
Post #1





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


Witam, mam taki problem, że stworzyłem sobie "rozszerzenie" CI_controllera

  1. class MY_Controller extends CI_Controller {
  2.  
  3. function __construct() {
  4. parent::__construct();
  5. $this->load->model('data_selection_model');
  6. $this->data['credits'] = $this->data_selection_model->get_credits($this->session->userdata('username'));
  7. }
  8. }


jego glownym zadaniem jest przeslanie zmiennej data['credits'] do mojego kontrolera strony ktory go "extenduje", zeby z niego przeslac zmienna $data do widoku

$this->load->view('includes/template', $data);

zrobilem prosty template do ktorego z mojego kontrolera strony wysylany jest $data['main_content'] ktory odpowiada za tresc strony aktualnie wyswietlanej i to dziala spoko. Problem sie pojawia gdy chce wypisac zmienna $credits w widoku, bo wtedy mowi mi, że jej nie widzi.

korzystalem z tego artykulu
http://philsturgeon.co.uk/blog/2010/02/Cod...-Keeping-it-DRY
w nim autor napisal ze zeby wszystkie kontrolery dziedziczace mialy dostep do zmiennych nalezy je podac w formie $this->data['credits'] .......

Czy ktos moze wie gdzie lezy problem i potrafilby mi pomoc ?
pozdrawiam

Jeszcze moze powiem co chce zrobic to moze zamiast tego rozwiazania ktos znalby lepsze tongue.gif

Otoz majac ten swoj "template" mam w nim header ktory loaduje rowniez login_bar. Ten login bar tak czy siak wystepuje na kazdej stronie. W nim mam funkcje sprawdzajaca czy jest uzytkownik zalogowany (wtedy pojawia sie menu) czy tez nie (wtedy pojawiaja sie pola login i haslo). Po zalogowaniu pojawia sie komunikat " Witam, (tu z sesji username) jestes zalogowany" i chcialbym zeby po tym rowniez pokazany byl jego stan konta (pobrany przez model z bazy).

Ten post edytował jacobson 13.05.2011, 10:00:05
Go to the top of the page
+Quote Post
szok
post 13.05.2011, 09:52:34
Post #2





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


Hm ale dziedziczenie po kontrolerze MY_Contoller Ci Działa tak?

Chcesz mieć dostęp do jakiś zmiennych w Kontrolerach dziedziczących po MY_Controller? Dobrze rozumiem?

  1. class MY_Controller extends CI_Controller {
  2.  
  3. public $data = Array();
  4.  
  5. public function __construct() {
  6. parent::__construct();
  7. $this->load->model('data_selection_model');
  8. $this->data['credits'] = $this->data_selection_model->get_credits($this->session->userdata('username'));
  9. }
  10. }


I potem będziesz miał dostęp to zmiennej/pola $this->data w kontrolerach które dziedziczą po MY_Controller.

Nie polecam ci wyświetlać $this->data w widoku, lepiej przekazać normalnie zmienna do widoku.

O to chodziło? Dobrze zrozumiałem.


--------------------
Go to the top of the page
+Quote Post
jacobson
post 13.05.2011, 22:36:42
Post #3





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


tak dokladnie o to mi chodzilo, dziekuje bardzo za pomoc.

a rozumiem ze Tworzac taki kontroller MY_Controller i tam deklarujac to $this->data['credits'] i tak musze w moim kontrolerze przypisac to do wlasnego $data['credits'] = $this->data['credits']

nie da sie w jakis sposob zadeklarowac tego $data['credits'] zeby w kontrolerze samo wywolanie widoku z przeslaniem $data wystarczylo ?

Ten post edytował jacobson 13.05.2011, 22:39:48
Go to the top of the page
+Quote Post
szok
post 14.05.2011, 08:41:33
Post #4





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


Tzn, w widoku jak dasz $this->data['credits']; to powinno zadziałać bo dostęp do niej jest publiczny, więc raczej nie powinno być problemu, ale lepiej tego nie stosować, lepiej przekazywać zmienne w formie tablicy.



--------------------
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: 25.04.2024 - 13:20