php - 使用Smarty,是否可以根据方法的返回值调用方法?

标签 php smarty

我有 Smarty 代码

{$obj->foo()->bar()}

Smarty 提示表达式中存在“无法识别的标签”。如果我把它改成只是

{$obj->foo()}

它不会提示,所以我认为问题在于我正在对方法的结果调用方法。这是 Smarty 解析器的限制,还是我在这里遗漏了其他内容?

我知道我可以使用 {assign} 解决这个问题,我只是想知道我是否正确理解了限制的程度。

最佳答案

您使用的是Smarty2还是Smarty3?

Smarty2 将要求您在第一个方法之后使用 {assign}。如果您向一个方法传递多个参数,也会出现问题。

Smarty3 有一个完全重写的解析器,你可以完全做你想做的事。您也不再需要{assign},因为您只需执行{$new_var = "Anything"}即可。

这是 Smarty3 中的测试:

我们的类(class)

class Foo {
    function boo() {
        return new Boo(); 
    }
}

class Boo {
    function woo() {
        return "woo!";
    }
}

分配的模板变量

$foo = new Foo();
$tpl->assign('foo', $foo);

模板

{$foo->boo()->woo()}

浏览器输出

woo! 

关于php - 使用Smarty,是否可以根据方法的返回值调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651703/

相关文章:

php - 如何在 WHERE 子句中使用 CASE WHEN?

javascript - 如何使用js提取ajax调用的响应?

php - 变量内的 Smarty 模板变量

smarty - 使用相对路径包含子文件夹中的 Smarty 模板

Jquery 与 SMARTY 和 JSON

php - 基于 Smarty 的 Web 应用程序中的内容编码错误

javascript - 通过 Ajax 将文件传递给 PHP(无重定向)

php - 按州组织自定义 WordPress 帖子的更有效方法

php - 无法使用 Composer 下载和安装 Laravel 5。错误 : HTTP request failed

php - 如何使用 smarty - seo 速度优化将所有 css 链接转换为内联样式