- 2007-03-29
- php
CakePHPからSmartyを使うのは一見いいとこどりのようで、実際結構大変かもしれない。
- How to use Smarty with Cake (SmartyView) | The Bakery, Everything CakePHP : Articles
- MOONGIFT ブログ ≫ cakePHP覚書 (1)
素のCakePHPだと
<p>Title: <?php echo $html->input('Post/title', array('size'=>40, 'class'=>'classname'))}</p>
みたいな感じのものを、Smartyテンプレート内では配列を生成できないので、
{assign_assoc var='ArrayName' value='size=>40,class=>classname'}
<p>Title: {$html->input('Post/title', $ArrayName)}</p>
と書こうという話。そんなassignは個人的に許せないわけですよ。 CakePHPのbasic.phpにはaとかaaとかhとかprとか色々便利な関数があるのと、 Smartyテンプレート内では関数を自由に呼び出すことはできないけど、 テンプレート変数のメソッドなら治外法権という性質を利用して、 SmartyViewにラッパーメソッドを追加。
function aa() {
$args = func_get_args();
return call_user_func_array('aa', $args);
}
SmartyViewのインスタンスは$viewとしてテンプレート内から参照できるので、
<p>Title: {$html->input('Post/title', $view->aa('size', 40, 'class', 'classname'))}</p>
と書くことができる。邪道な気もしますが。あと、同様にprも追加しておいた。
あと、テンプレート変数をヘルパーの引数に渡したい時とかどうしよう(ループカウンタとか)。
$view->Smarty->get_template_vars()かなぁ。どんどん道を外れていく気がする。
2007-04-03 追記:CakePHP日記:SmartyからHTMLヘルパーの属性を指定する