Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] base MY_Controller problem
Forum PHP.pl > Forum > PHP > Frameworki
jacobson
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).
szok
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.
jacobson
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 ?
szok
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.

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.