Smarty 变量串联

Smarty variables concatenation

我有这样的东西:

<select class="form-control" name="activ">
 {if {$smarty.session.admin['access']['pages:list:activ']} == '1'}
   <option value="1">{#L_YES#}</option>
   <option value="0">{#L_NO#}</option>
 {else}
   <option value="0">{#L_NO#}</option>
 {/if}
</select>

我需要将 ['pages:list:activ'] 更改为 ['{$smarty.get.module}:list:activ']

我该怎么做?

这里有多种选择..

首先,PHP 在您使用单引号时不会解析变量。

所以

$a = 'string';
echo '$test with something';

将输出:

$test with something

但是如果你使用:

$a = 'string';
echo "$test with something";

echo "{$test} with something";

它将输出:

string with something

但是对于 Smarty,如果您在名称中使用 .->,这将不起作用,因为您必须在变量周围使用反引号,就像这样(注意它周围的双引号):

{if {$smarty.session.admin['access']["`$smarty.get.module`:list:activ"]} == '1'}

有关详细信息,请参阅:Smarty Embedding Vars in Double Quotes


您还可以使用 cat 修饰符并将连接的值分配给 var:

{assign var = "moduleList" value = $smarty.get.module|cat:":list:activ"}
{if {$smarty.session.admin['access'][$moduleList]} == '1'}