2012-02-19 5 views
5

Я хочу объединить уже назначенную переменную и сохранить его на новой переменной, что-то вроде этого:Соединить строки и переменные в присвоении новой переменной в 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} 

Таким образом, в результате чего $editPerm должно быть: de.admin.canEditMyClass

Как это сделать? В настоящее время он выдает ошибку: Cannot use string as array offset...

+0

На какой из четырех линий выбрасывается ошибка? –

ответ

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}