Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: smarty ---> błąd nie wiem czemu
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
exceender
Witam jestem nowy na tym forum i proszę o wyrozumiałość w razie jakiś błędów.

Mam problem z smartami mam w folderze include plik funkcje chcę w nim zdefiniować funkcje opartą na smarcie aby na każdej stronie jak ja wywołam to będzie menu itp. Używam WebServ.

w pliku funkcje.php mam:

Kod
define('SMARTY_DIR','./libs/smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;

//tutaj podajemy sciezki do poszczegolnych katalogow (podalem przykladowe sdciezki)
// $_home_path -  bezwzgledna sciezka do naszej strony
// mozna to zapisac inaczej (to tylko przyklad :) )
$smarty->template_dir = $_home_path.'./templates/';
$smarty->compile_dir  = $_home_path.'./libs/templates_c/';
$smarty->config_dir   = $_home_path.'./libs/configs/';
$smarty->cache_dir    = $_home_path.'./cache/';


i mam

Kod
function site (){
$smarty -> display('heder.tpl');
}


niby wszystko powinno być ok powinno brykać ale wyskakuje błąd

Cytat
Fatal error: Cannot redeclare class Smarty in C:\Program Files\WebServ\httpd\libs\smarty\Smarty.class.php on line 65


w Smarty.class.php w tej linii mam: {
kawałek kodu:
Kod
/**
* @package Smarty
*/
class Smarty
{
    /**#@+
     * Smarty Configuration Section
     */

    /**
     * The name of the directory where templates are located.
     *
     * @var string
     */
    var $template_dir    =  './templates/LGTv2';

    /**
     * The directory where compiled templates are located.
     *
     * @var string
     */
    var $compile_dir     =  './libs/templates_c';

    /**
     * The directory where config files are located.
     *
     * @var string
     */
    var $config_dir      =  './libs/configs';

    /**
     * An array of directories searched for plugins.
     *
     * @var array
     */
    var $plugins_dir     =  array('plugins');


jak nie daje tego w plik funkcje.php nie używam smartów to jest wszystko ok.

Pozdrawiam ex
erix
Cytat
Niby wszystko powinno być ok powinno brykać ale wyskakuje błąd

Strzelam, że parę razy include" title="Zobacz w manualu PHP" target="_manual'ujesz plik funkcje.php. Wywala błąd, bo deklarujesz już istniejącą klasę.

Kod
function site (){
$smarty -> display('heder.tpl');
}

To nie ma prawa zadziałać, bo $smarty nie jest zmienną superglobalną.
exceender
zrobiłem inaczej dodałem to co napisane w tym temacie : Temat: php_Templates

nie używałem przez chwilę smartów

dodałem plik class_temp.php dodałem potem dodałem to do funkcje.php

Kod
require_once("class_temp.php");


a potem dodałem

Kod
$tpl->display('test.tpl')


i o dziwo chodziło mi to teraz. Jak mógł by ktoś podać linki do jakiś systemów templates to bym był wdzięczny albo ktoś wie może czemu tak jest
drucik
Witam,

Funkcja require() działa tak samo jak include() czyli doczepia plik jako całość do aktualnego pliku i przez to wyświetlało Ci błąd o redeklaracji klasy Smarty, najlepiej zamiast include() i require() używać require_once() wtedy jeżeli plik jest już dołączony to nie dołącza go po raz drugi.
Rafal Filipek
require_once jest dosc wolne. najlepiej wstawic include dla klasy Smarty do jakiegos nadrzednego pliku tak aby byl on na pewno dodany tylko raz.
exceender
Dzięki za podpowiedzi poradziłem sobie już jeszcze raz dzięki
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.