PHPでSmartyを使用してます。

Smartyの設定をクラスで一元化しているのですが

require_once('smarty/libs/Smarty.class.php');
class Mysmarty extends Smarty {

public function __construct() {
$this->Smarty();
$this->template_dir = "C:/xampp/htdocs/test/templates/";
$this->compile_dir ="C:/xampp/htdocs/test/templates_c/";

}
}

このような感じで設定して http://localhost/test/index.php のファイルで
Mysmartyクラスを設定し、test.tpl を展開しているんですが仮に、
 http://localhost/test/sample/index.php のファイルでテンプレートを
展開しようとすると以下のエラーメッセージが出ます。

Warning: Smarty error: unable to read resource: "test.tpl" in C:\xampp\php\PEAR\smarty\libs\Smarty.class.php on line 1095

そこで http://localhost/test/sample/ のディレクトリ内に
templates と templates_c ディレクトリを作成し、
http://localhost/test/sample/index.php を開くとテンプレートを
展開することができたんですがこのような現象は望んでいないので

C:/xampp/htdocs/test/templates/
C:/xampp/htdocs/test/templates_c/
にテンプレートファイルを一元化して設置したいのですがどのような解決方法があるでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/01/12 13:04:39
  • 終了:2008/01/19 13:05:02

回答(1件)

id:hts1004 No.1

hts1004回答回数13ベストアンサー獲得回数22008/01/12 23:25:13

ポイント60pt

ちなみに、index.phpでは、MySmartyクラスをnewされてますか?

コンストラクタとかはあまり詳しくはないので、質問内の関数が

うまく動いているかどうかはちょっとわからないのですが、とりあえず、

/// Smartyをnewする
require_once('smarty/libs/Smarty.class.php');
$smarty = & new Smarty;

//パラメータセット
$smarty->template_dir	= "C:/xampp/htdocs/test/templates/";
$smarty->compile_dir	= "C:/xampp/htdocs/test/templates_c/";

とかいたPHPファイルをindex.phpその他PHPファイルで必ずrequire_once

してやればできるかと。(個人的には実績ありです)

id:jinchangz

すいませんソース読み直してたら

最後にまたsmartyクラスをnewしてました。完全に私のミスです。

お手数掛けてすいませんでした。

2008/01/13 10:56:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません