getTemplateVars()で$fieldsに空文字と'*'以外の文字列を指定するとArray to string conversionエラーになります。
コード: 全て選択
# document.parser.class.inc.php Line:4754から
if ($fields === '*' || $fields === '') {
$fields = "tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value";
} else {
$fields = sprintf(
"%s, IF(tvc.value!='',tvc.value,tv.default_text) as value",
array_map(
function ($v) {
return 'tv.' . $v;
},
explode(',', $fields)
)
);
}sprintf()の%sに対して、array_map()の戻り値である配列を渡しているのが原因だと思います。
evo()->join()を使用して、
コード: 全て選択
if ($fields === '*' || $fields === '') {
$fields = "tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value";
} else {
$fields = sprintf(
"%s, IF(tvc.value!='',tvc.value,tv.default_text) as value",
evo()->join(',', explode(',', $fields), 'tv.')
);
}'value'は指定しなくても取得しますが、これは仕様なんですね。
と思ったのですが、$fields='value'とするとUnknown column 'tv.value' in 'field list'エラーになります。
実装した方には大変申し訳ないのですが、修正する手間と現実には'*'しか使われていないことを考えると、いっそのこと
コード: 全て選択
$fields = "tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value";
