使用Smarty,是否可以在方法的返回值上调用方法?
问题描述:
我有Smarty的代码使用Smarty,是否可以在方法的返回值上调用方法?
{$obj->foo()->bar()}
和Smarty的抱怨在表达“无法识别的标签”。如果我将其更改为只
{$obj->foo()}
它不抱怨,所以我想这个问题是事实,我呼吁的方法的结果的方法。这是Smarty解析器的限制吗,还是我在这里丢失了别的东西?
我知道我可以解决这个与{assign}
,我只是想知道如果我理解正确的限制程度。
答
您是否使用SMARTY2或Smarty3?
SMARTY2会要求你第一种方法使用后{assign}
。如果您向一个方法传递多个参数,它也会有问题。
Smarty3有一个完全重写的分析器,你可以做你想要什么。你也不再需要{assign}
,你可以简单地做{$new_var = "Anything"}
。
下面是Smarty3测试:
我们的课程
class Foo {
function boo() {
return new Boo();
}
}
class Boo {
function woo() {
return "woo!";
}
}
模板变量分配
$foo = new Foo();
$tpl->assign('foo', $foo);
模板
{$foo->boo()->woo()}
浏览器输出
woo!
+0
我使用Smarty的2,但它是很好的了解,Smarty的3个修复它。当它有最终版本时,我可能会更新。 – 2010-09-24 07:52:48
尽管我记得(我的Smarty时间大约在5年前结束?),我为此使用了'{assign}'。可能会有一个更优雅的解决方案,但我想我在那时搜索了一遍,这是我能找到的。祝你好运! – janosrusiczki 2010-09-06 13:58:32