2012-02-19 21 views
5

新變量的賦值我想連接的已分配的變量,並將其保存到一個新的變量,像這樣:連接字符串和變量在智者

{assign var=permCat value="de.admin"} 
{assign var=objectName value="myClass"} 
{assign var=objectNameUpper value=$objectName|ucfirst} 
{assign var=editPerm value=$permCat|cat:"canEdit"|cat:$objectNameUpper} 

因此,所產生的$editPerm應該是:de.admin.canEditMyClass

我該怎麼做?目前,它會拋出一個錯誤:Cannot use string as array offset...

+0

在這四大行的錯誤被拋出? – 2012-02-19 17:46:21

回答

12

您描述的錯誤不能由給定的代碼引起。我假設你正在嘗試構建一個字符串「de.admin.canEditMyClass」作爲變量{$builtString.foo}。這就是發生錯誤的地方,因爲smarty不會將你的字符串神奇地轉換爲變量引用。

如果您使用SMARTY2:

{assign var=objectName value="myClass"} 
{assign var=objectNameUpper value=$objectName|ucfirst} 
{assign var=editPerm value="canEdit"|cat:$objectNameUpper} 
{$de.admin.$editPerm.foo} 

如果您使用Smarty3:

{$de.admin.{"canEdit"|cat:{"myClass"|ucfirst}}.foo}