簡體   English   中英

Smarty:是否可以在模板中調用PHP函數(來自控制器類)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM