[英]Smarty: is it possible to call a PHP function (from the controller class) inside the template?
我在控制器类中创建了一个需要在模板中使用的函数(因为它渲染了多次模板(每个模板都是网站上的一个帖子,并且它们都会在新闻源中显示不同的值)。是否存在一种在smarty变量上调用它的方法?假设您在控制器中创建了一个函数:
public function foo($bar){
$bar++;
return $bar;
}
然后在模板中:
{$smarbar|foo}
或类似的东西
您可以注册一个将调用类的给定方法的修饰符:
class SomeClass {
public function someMethod($value)
{
// return modified value
}
}
$smarty = new Smarty();
$smarty->registerPlugin('modifier', 'myModifier', array('SomeClass', 'someMethod'));
// or
$instance = new SomeClass();
$smarty->registerPlugin('modifier', 'myModifier', array($instance, 'someMethod'));
现在您可以在模板中使用它:
{$someVar|myModifier}
这是registerPlugin文档。
是的,只需在模板上管道功能
{$ MYVAR |创建my_function)
一切都取决于您的需求,但如果您只是想使用这样的代码,您可以将对象分配给Smarty并使用其方法。
例如,在PHP中,您可以:
class Controller
{
public function foo($bar)
{
$bar++;
return $bar;
}
}
$smarty->assign('a', new Controller);
在Smarty你可以做到:
{$a->foo(5)} {$a->foo(15)}
你会得到:
6 16
作为输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.