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)}