インストールメモ » CakePHP » CakePHPでSmartyを利用する方法

CakePHPでSmartyを利用する方法

Smartyのダウンロード(2.6.12 で動作確認)

こちらよりSmarty-2.*.**.tar.gzをダウンロード。
CakePHPの/vendorsに、smartyディレクトリを作成。
Smarty-2.*.**.tar.gzを解凍して、libs内のファイルを上で作成したsmartyディレクトリにコピー。
(/vendors/smarty/Smarty.classの様な構成になる。)

/app/tmp/smarty/にSmartyの利用するcache、compileディレクトリを作成。
/app/tmp/smarty/cache/
/app/tmp/smarty/compile/

Smarty View class (Version 1.1で動作確認)

こちらよりファイルをダウンロードしてsmarty.php にリネームして/app/views/ ディレクトリにコピー。

__constructの

$this->subDir = 'smarty'.DS;

をコメントアウト

_renderの

$this->Smarty->assign_by_ref('view', $this);



$this->Smarty->assign_by_ref('this', $this);

に変更

AppControllerへの設定

/cake/app_controller.phpを/app/app_controller.phpにコピーして

class AppController extends Controller {

var $view = 'Smarty';




これでviewに「.tpl」があればSmartyのテンプレートとして処理を行い、なければ通常通り「.thtml」を表示します。

変数のassignなどは、Smarty View classが行なってくれるので、this、html、form、sessionや利用しているモデルなどはそのまま利用する事が出来ますので、元のビューの

「< ?php echo」を「{」

「;?>」を「}」
にするだけで、ほぼ利用する事が出来ます。

{$html->input(’Member/email’, array(’size’ => ‘60′))}
の「array(’size’ => ‘60′)」の部分がエラーになる問題は、ここからファイルをダウンロードして、function.assign_assoc.phpにリネームして/vendors/smarty/libs/plugins/にコピー。

テンプレートの先頭で
{assign_assoc var=’ArrayName’ value=’size=>60′}

{assign_assoc var=’ArrayName’ glue=’::’ value=’size=>60::value=>commas, no prob’}
などとして
{$html->input(’Member/email’, $ArrayName)}
とすれば面倒ですがこの問題も解決します。

Filed under: CakePHP — jun 11:30:43