Конкатенация строк и переменных в присваивании новой переменной в smarty - PullRequest
5 голосов
/ 19 февраля 2012

Я хочу объединить уже назначенную переменную и сохранить ее в новой переменной, что-то вроде этого:

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

1 Ответ

12 голосов
/ 20 февраля 2012

Ошибка, которую вы описываете, не может быть вызвана данным кодом. Я предполагаю, что вы пытаетесь создать строку "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}
...