我想在我聪明的模板中调用php方法。
我有班级
class TestClass
{
public static myMth($vars) {
var_dump($vars);
}
}
在我的模板中,我说:
{TestClass::myMth($someVar)}
这不起作用。我有错误:
解析错误:语法错误,意外的'myMth'(T_STRING),期待 变量(T_VARIABLE)
我的代码中有什么问题吗?
答案 0 :(得分:4)
事实上它没有问题(Smarty 3.1.19):
在PHP中:
$data['elements'] = [1,2,3,4,5,6,7,8,9,10,11];
$smarty->assign('someVar',$data);
class TestClass
{
public static function myMth($vars) { // added function word here - you missed it in question
var_dump($vars);
echo "<br />test test test<br />";
}
}
在Smarty:
{TestClass::myMth($someVar)}
输出:
array(1) { ["elements"]=> array(11) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) [7]=> int(8) [8]=> int(9) [9]=> int(10) [10]=> int(11) } }
test test test
但我不认为这是使用Smarty的最佳方式。
你应该使用:
$smarty->assign('result', TestClass::myMth($data));
为什么呢?这很简单。 Smarty是模板引擎,你应该只在这里显示数据。您不应该启动类/方法等。如果myMyth
函数名称将更改或参数将更改,该怎么办?您需要更改Smarty模板文件。更好的是只向Smarty分配此方法的输出。
但是,如果您仍想这样做,您还可以查看Smarty网站上的Static classes部分。