php - Smarty:是否可以在模板中调用 PHP 函数(从 Controller 类)?

标签 php function smarty

我在 Controller 类中创建了一个函数,需要在模板内部使用(因为模板渲染了很多次(每个模板都是网站上的一篇文章,它们都会以不同的值显示在新闻源中) .有没有办法在smarty变量上调用它? 假设您在 Controller 中创建了一个函数:

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文档。

关于php - Smarty:是否可以在模板中调用 PHP 函数(从 Controller 类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551384/

相关文章:

php-src - ZEND_TSRMLS_CACHE_UPDATE - 它是什么以及何时需要?

PHP file_get_contents 将 & 转换为 &amp

function - 函数长度应该有多大(函数中的代码行)?

php - 仅更改 css 文件的 Smarty 分隔符标记?

php - Smarty 模板 : How to change the order of blocks in child template?

php - jqplot 图表未显示在我的 jquerymobile 页面中

javascript - onClick问题的多种功能

string - Haskell 函数取出最后一次出现的输入字符

php - 如何在Smarty中生成年份?

php - Laravel 5.8 setLocale 全局