Templates 在smarty中分配新变量时连接字符串和变量

Templates 在smarty中分配新变量时连接字符串和变量,templates,smarty,concatenation,Templates,Smarty,Concatenation,我想连接一个已分配的变量,并将其保存到一个新变量,如下所示: {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} 因此,生成的$editPe

我想连接一个已分配的变量,并将其保存到一个新变量,如下所示:

{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


我该怎么做?当前,它抛出一个错误:
不能使用字符串作为数组偏移量…

您描述的错误不能由给定的代码引起。我假设您正在尝试构建一个字符串“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}

在这四行中的哪一行抛出错误?