Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Smarty + klasy
slimboj
post 19.05.2009, 08:37:18
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2008

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


Witam,
Piszę właśnie aplikację z zastosowaniem wzorca MVC i z obsługą smarty i napotkałem pewien problem, z którym nie bardzo jestem w stanie sobie poradzić.
Struktura katalogów i plików wygląda tak:

--ROOT
|
+-controller (frontcontroller.php + inne kontrolery)
+-model
+view (test.tpl)
+libs/smarty
|
-index.php

W pliku index.php mam "include" wszystkich klas z katalogów powyżej (poza view), a także wywołanie klasy FrontController
W pliku frontcontroller.php klasa FrontController dziedziczy po klasie Smarty.
I teraz jeśli napiszę klasę tak:
  1. <?php
  2. class FrontController extends Smarty
  3. {
  4. public function __construct()
  5. {
  6.  $this -> template_dir =  ROOT_PATH."/view/";
  7.  $this -> compile_dir = ROOT_PATH.'/libs/smarty/templates_c/';
  8.  $this -> config_dir = ROOT_PATH.'/libs/smarty/configs/';
  9.  $this -> cache_dir = ROOT_PATH.'/libs/smarty/cache/';
  10.  
  11.  $this -> display('test.tpl')
  12. }
  13. }
  14. ?>


To plik test.tpl zostaje załadowany poprawnie.
Ale chciałbym aby zamiast wpisywania w każdej klasie ścieżek do ładowania smart zastosować jedną klasę, np.

  1. <?php
  2. class LoadSmarty extends Smarty
  3. {
  4. public function __construct()
  5. {
  6.  $this -> template_dir =  ROOT_PATH."/view/";
  7.  $this -> compile_dir = ROOT_PATH.'/libs/smarty/templates_c/';
  8.  $this -> config_dir = ROOT_PATH.'/libs/smarty/configs/';
  9.  $this -> cache_dir = ROOT_PATH.'/libs/smarty/cache/';
  10. }
  11. }
  12. ?>


frontcontroller.php
  1. <?php
  2. class FrontController extends Smarty
  3. {
  4. public function __construct()
  5. {
  6.  $display = new LoadSmarty();
  7.  $display -> display('test.tpl')
  8. }
  9. }
  10. ?>



Problem polega na tym, że jeżeli zastosuję ten sposób to w kontrolerze, który ma wywołać dany template pojawia się komunikat:
Warning: Smarty error: unable to read resource: "test.tpl" in ..//libs/smarty/Smarty.class.php on line 1092

I jeszcze mam pytanie, czy jest jakiś sposób aby obejść ładowanie smarty do każdej klasy z osobna, tylko załadować raz i mieć to z głowy.

P.S. Piszę z "palca" z pracy więc gdzieś w kodzie mogą być błędy.

Ten post edytował slimboj 19.05.2009, 09:02:19
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 09:07