2012-02-19 8 views
5

quiero para concatenar una variable ya asignado y guardarlo en una nueva variable, algo como esto:cadenas Concatenate y variables en la asignación de la nueva variable en Smarty

{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} 

Así, el $editPerm resultante debería ser: de.admin.canEditMyClass

¿Cómo puedo hacer esto? Actualmente, arroja un error: Cannot use string as array offset...

+0

En cuál de las cuatro líneas se lanza el error? –

Respuesta

12

El error que usted describe no puede ser causado por el código dado. Supongo que está intentando construir una cadena "de.admin.canEditMyClass" para usar como variable {$builtString.foo}. Ahí es donde ocurre el error, porque Smarty no convierte mágicamente su cadena a una referencia de variable.

Si está utilizando SMARTY2:

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

Si está utilizando Smarty3:

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