smarty テンプレート内で cakephp の html ヘルパーを使うとき、
{$html->css('mystyle', array('charset'=>'utf-8'))}
なんてことすると、array() 部でエラーとなる。Smarty テンプレート内では配列を生成できないってことらしい。
なので、smarty plugin に新しく function.assign_assoc.php なるプラグインを使って対応。
なので、smarty plugin に新しく function.assign_assoc.php なるプラグインを使って対応。
// function.assign_assoc.php function smarty_function_assign_assoc($params, &$smarty) { //extracts variables passed in extract($params); $assoc_array = array(); if(!isset($value) || !isset($var)) { return; } if(!isset($glue)) { $glue = ','; } $key_val_pairs = explode($glue, $value); foreach($key_val_pairs as $pair){ list($key, $val) = explode('=>',$pair); if($val == 'false') { $assoc_array[trim($key)] = false; }else{ $assoc_array[trim($key)] = trim($val); } } $smarty->assign($var, $assoc_array); }
上記のエラーのでる、ヘルパーを書き直すと、
{assign_assoc var='attributes_value' value='charset=>utf-8'} {$html->css('mystyle', $attributes_value)}