Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CI] Utrata obiektu w momencie załączenia pliku., Include/require gubi obiekt, ale tylko jako metoda...
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


W moim CI mam małą klasę template i się sprawdza ale chce podzielić szablon dodatkowo na moduły ponieważ mimo, że są różne templatki to np. nagłówek jest zawsze ten sam (albo się powtarza w wielu templatkach).

Przykładowy kod templatki:

  1. <?php include('application/views/elements/header.php'); ?>
  2. Jakiś HTML
  3. <?= $content; ?>
  4. <?php include('application/views/elements/footer.php'); ?>


Działa bez zarzutu.

Ale chciałbym to zrobić ładnie i zrobić metodę, która by sprawdzała czy element istnieje jednakże gdy wywołam taką metodę:
  1. $this->template->add_element('header');

w której dla uproszczenia problemu dodam tylko sam include to gubi obiekt tank_auth, który jest w $autoload['libraries'].
Obiekt ten przestaje działać także po wykonaniu funkcji poza includowanym plikiem.
Obiekt ten potrzebuje aby troszkę zmienić wygląd nagłówka w przypadku gdy user jest zalogowany.

Nie umiem pojąć dlaczego surowy include nie sprawia problemów, a już include w metodzie tak...
Nie wiem czy to w ogóle kwestia CI czy PHP.

Ten post edytował markonix 27.07.2012, 19:11:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


CI to mój pierwszy framework, ma tylko standardowe widoki, bez systemu templatek.


Jeżeli widok nie będzie plikiem HTMLem to taki bazowy szablon nie ma sensu, chyba, że bazowy to nie jedyny, co najwyżej domyślny.

Nie za bardzo rozumiem co miałby robić konstruktor VIEW.
Sprawdzać czy plik istnieje, potem include?
Nie wiem, dla mnie to bardziej skomplikowane, tym bardziej muszę myśleć o koderze.

W moim sposobie mam te kilka templatek - nie jest ich dużo.
Jeżeli chce nową templatkę z innym headerem to wystarczy kod:
  1. $this->template->add_element('other_header');

Nie wiem co w tym masakrycznego (IMG:style_emoticons/default/smile.gif)
Oczywiście nie działa mi ten sposób zgodnie z tematem.

Czy mniej więcej Twoją konwencje wykorzystuje ta biblioteka:
http://williamsconcepts.com/ci/codeigniter...late/index.html
?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:59