我有Smarty的代碼使用Smarty,是否可以在方法的返回值上調用方法?
{$obj->foo()->bar()}
和Smarty的抱怨在表達「無法識別的標籤」。如果我將其更改爲只
{$obj->foo()}
它不抱怨,所以我想這個問題是事實,我呼籲的方法的結果的方法。這是Smarty解析器的限制嗎,還是我在這裏丟失了別的東西?
我知道我可以解決這個與{assign}
,我只是想知道如果我理解正確的限制程度。
我有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!
我使用Smarty的2,但它是很好的瞭解,Smarty的3個修復它。當它有最終版本時,我可能會更新。 – 2010-09-24 07:52:48
儘管我記得(我的Smarty時間大約在5年前結束?),我爲此使用了'{assign}'。可能會有一個更優雅的解決方案,但我想我在那時搜索了一遍,這是我能找到的。祝你好運! – janosrusiczki 2010-09-06 13:58:32