Smarty:是否可以在模板中调用PHP函数(来自控制器类)?

Sim*_*n H 2 php function smarty

我在控制器类中创建了一个需要在模板中使用的函数(因为它呈现的模板很多次(每个模板都是网站上的一个帖子,它们都会在新闻源中显示不同的值).是否有一种在smarty变量上调用它的方法?假设您在控制器中创建了一个函数:

public function foo($bar){
       $bar++;
       return $bar;
}
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

{$smarbar|foo} 或类似的东西

Bog*_*dan 6

您可以注册一个将调用类的给定方法的修饰符:

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'));
Run Code Online (Sandbox Code Playgroud)

现在您可以在模板中使用它:

{$someVar|myModifier}
Run Code Online (Sandbox Code Playgroud)

这是registerPlugin文档.