Smarty」カテゴリーアーカイブ

Smartyのエラー

不明。。。

症状

Stateパターンで二つの状態にSmartyのオブジェクトを持たせてassignやdisplayの設定をしたところ、Smarty関数を呼びだすところでエラーになった。。。

しばらくデバッグしてみたけど、いまいちわからなかった。。。

対策

そこで、Smartyを継承させたSingletonパターンのMySmartyクラスを作成し、

assignの設定時に、オブジェクトを呼びだした。

すると、エラーはなくなり正常に表示されるようになった。

状態が違うオブジェクトにそれぞれ異なるSmartyオブジェクトをもたせたのがいけなかったのかな。

でも、SingletonにしたSmartyのオブジェクトを2つに持たせたらやっぱりダメだった。。

何が原因なんだ。。2つにSmartyオブジェクトを持たせるとあまりよろしくないのかな。

インストール

ダウンロード

下記からSmarty (version) .tar.gzをDLする.

http://www.smarty.net/download.php

展開

$ tar -zxvf Smarty (version) .tar.gz

必要なファイル

展開するといくつかディレクトリが存在するが,

その中でもlibディレクトリの中が必要になる.

  • Smarty.class.php
  • Smarty_Compiler.class.php
  • Config_File.class.php
  • debug.tpl
  • /internals/以下
  • /plugins/以下

これをサーバの適当なディレクトリに保存する.

例えば

/lib/Smarty/

これで準備完了.

使用方法

以下のディレクトリを準備する.

  • templates
  • templates_c
  • cache

smartyテンプレートファイルはtemplates内に保存.

phpファイルでrequireするときにSmartyをインストールしたディレクトリのファイルを指定する.

require_once(“/lib/Smarty/Smarty.class.php”);

$iSmarty = new Smarty();

$iSmarty->assign(title, “タイトル”);