2.0 stableになってからまともにCakePHPに触れてなかったので、とゆーか、普段1.2系に触れてるのもあって、様変わりしてる2.0系は弱いんだよねー。
強いてSmartyを組み込みたいが為にGoogle先生にお世話になったメモ。
先生に「cakephp 2.0 smarty」と質問するとこのURLを教えてくれます。
http://www18.atwiki.jp/javascripter/pages/26.html
ま、一番目にヒットする内容のページが広告などなどで崩れてるのもあって整形してくれてるWikiみたいなんだけれど、とりあえずこのソースをコピって /app/Views/SmartyView.php を新規作成してペーストした。
ソースの中でこの修正をしておかないと、例えば /Views/Pages/smarty/display.tpl を読み込むので /Views/Pages/display.tpl とストレートにお願いしたいから(ctp共存の仕様なのかな?知らない)。
あと、Layoutsの中だけは /smarty/default.tpl じゃなくて何故かそのまま default.tpl を読むので…。
ちなみに、コピペのソースだと routes.php でテンプレートが指定されてても無視してメソッド名のテンプレートを呼んだので別途対応しないとそれは機能しないかもしれない(デフォルトでは pages コントローラの display メソッドが実行されて home テンプレートを呼ぶはずなのにそのまま display だった)。
↑ものすごい勘違いで、CoreにあるPagesController.phpではパラメータとしてrender()に設定されるからhomeテンプレートが読み込まれるのであって、ユーザコントローラ(app/controller/PagesController.php)を作った際に特別処理しなければ普通にdisplayテンプレートが呼ばれる挙動で正常だった orz
以上が整えば、各コントローラのクラス変数 $viewClass = 'Smarty'; でおk!
ってそんな面倒なことはしないよね…、AppController で指定したら継承するだけでおk!
class AppController extends Controller {
public $viewClass = 'Smarty'; # Smartyって書いとくとSmartyViewとして先のファイルをロード
}
最後に最初にやるべき内容を補足しとくと、Smartyをダウンロード&解凍したら
もちろんネイティブに<?php echo $name; ?>とかショートタグで<?=$name?>の方が軽いと思うよ。
でもショートタグは推奨されないしさー、もうテンプレの可読性で嫌になる時もしばしば。
だから {$name} とか書きたいじゃん?(´・ω・`)おれだけ?
みんなが幸せでありますように!
強いてSmartyを組み込みたいが為にGoogle先生にお世話になったメモ。
先生に「cakephp 2.0 smarty」と質問するとこのURLを教えてくれます。
http://www18.atwiki.jp/javascripter/pages/26.html
ま、一番目にヒットする内容のページが広告などなどで崩れてるのもあって整形してくれてるWikiみたいなんだけれど、とりあえずこのソースをコピって /app/Views/SmartyView.php を新規作成してペーストした。
-$this->subDir = 'smarty'.DS;
+$this->subDir = '';
ソースの中でこの修正をしておかないと、例えば /Views/Pages/smarty/display.tpl を読み込むので /Views/Pages/display.tpl とストレートにお願いしたいから(ctp共存の仕様なのかな?知らない)。
あと、Layoutsの中だけは /smarty/default.tpl じゃなくて何故かそのまま default.tpl を読むので…。
↑ものすごい勘違いで、CoreにあるPagesController.phpではパラメータとしてrender()に設定されるからhomeテンプレートが読み込まれるのであって、ユーザコントローラ(app/controller/PagesController.php)を作った際に特別処理しなければ普通にdisplayテンプレートが呼ばれる挙動で正常だった orz
以上が整えば、各コントローラのクラス変数 $viewClass = 'Smarty'; でおk!
ってそんな面倒なことはしないよね…、AppController で指定したら継承するだけでおk!
class AppController extends Controller {
public $viewClass = 'Smarty'; # Smartyって書いとくとSmartyViewとして先のファイルをロード
}
最後に最初にやるべき内容を補足しとくと、Smartyをダウンロード&解凍したら
- libs → smarty へフォルダ名リネーム
- /app/Venders/smarty として設置
もちろんネイティブに<?php echo $name; ?>とかショートタグで<?=$name?>の方が軽いと思うよ。
でもショートタグは推奨されないしさー、もうテンプレの可読性で嫌になる時もしばしば。
だから {$name} とか書きたいじゃん?(´・ω・`)おれだけ?
みんなが幸せでありますように!