Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Smarty w klasie?
Forum PHP.pl > Forum > Przedszkole
eMartio
Czy można w ciele metod klas generować obiekt systemów szablonów Smarty, wyświetlić stronę i zakończyć działanie aplikacji? Czy raczej nie wypada tego typu praktyka wewnątrz klasy i zrobić to w kontrolerze? Jeżeli w kontrolerze to w jaki sposób wybrać właściwy szablon do prezentacji?

Przykładowy kod:

  1. <?php
  2.  
  3. class Klasa {
  4. function metoda() {
  5. $smarty new Smarty();
  6. $smarty->dispal('szablon.tpl');
  7. }
  8. }
  9.  
  10. ?>


  1. <?php
  2.  
  3. $cos = new Klasa();
  4. if (blad == TRUE) { $cos->metoda(); }
  5. {...}
  6. $smarty new Smarty();
  7. $smarty->dispal('inny_szablon.tpl');
  8.  
  9. ?>
sf
nie widze potrzeby robienia exit po wywolaniu display, np. chcialbym po display zapisac czas generowania strony, w Twoim przypadku jest to niemozliwe

a swoja droga, wole dziedziczyc po Smarty np. SmartyResponse extends Smarty winksmiley.jpg
bigZbig
Mozna w metodzie (po co ten exit?), ale w kontlorerze faktycznie ladniej.

  1. <?php
  2.  
  3. class Klasa {
  4. protect smarty;
  5.  
  6. publi function __construct() {
  7. $this->smarty new Smarty();
  8. }
  9.  
  10. function metoda() {
  11. $this->smarty->dispal('szablon.tpl');
  12. }
  13. }
  14. ?>

Moim skromnym zdniem to jeszcze lepiej bedzie w ogole utworzyc obiekt smarty poza klasa i tylko go do niej przekazac

  1. <?
  2. $smarty = new Smarty();
  3.  
  4. class Klasa {
  5. protect smarty;
  6.  
  7. publi function __construct($smarty) {
  8. $this->smarty = $smarty;
  9. }
  10.  
  11. function metoda() {
  12. $this->smarty->dispal('szablon.tpl');
  13. }
  14. }
  15.  
  16. $klasa = new Klasa($smarty);
  17. $klasa->metoda();
  18. ?>
ActivePlayer
poprawka gdyby ktos niewtajemniczony czytal:
nie
Kod
dispal
tylko
Kod
display
Martio_L
Cytat(sf @ 2006-01-12 14:26:41)
nie widze potrzeby robienia exit po wywolaniu display, np. chcialbym po display zapisac czas generowania strony, w Twoim przypadku jest to niemozliwe

a swoja droga, wole dziedziczyc po Smarty np. SmartyResponse extends Smarty winksmiley.jpg

W mojej aplikacji mam własną klasę Smarty, która dziedziczy po klasie Smarty. Z tym "dispal" to przepraszam. Pisałem to na szybkiego.

  1. <?
  2. $smarty = new Smarty();
  3.  
  4. class Klasa {
  5. protect smarty;
  6.  
  7. publi function __construct($smarty) {
  8. $this->smarty = $smarty;
  9. }
  10.  
  11. function metoda() {
  12. $this->smarty->dispal('szablon.tpl');
  13. }
  14. }
  15.  
  16. $klasa = new Klasa($smarty);
  17. $klasa->metoda();
  18. ?>


Podoba mi się ten zapis. Dziękuję za pomoc.
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.