Smarty模板中{foreachelse}后新增href链接无法显示的问题求助
问题原因与解决方案
原因说明
Smarty 的 {foreach}+{foreachelse} 是互斥执行逻辑:
- 当
$departments有数据时,只会运行{foreach}到{foreachelse}之间的循环代码,{foreachelse}到{/foreach}之间的所有内容(包括你添加的链接)都会被跳过。 - 只有当
$departments为空时,才会执行{foreachelse}块内的内容和你加的链接。
而把链接放在 {foreach} 起始标签前,属于循环结构之外的代码,不管 $departments 是否有数据都会执行,所以能正常显示。
解决方案
根据你的需求选择对应方式:
1. 无论有无部门都显示链接
把链接放在 {/foreach} 标签外部(循环前或循环后均可):
{foreach from=$departments key=num item=department} <a class="list-group-item" href="{$smarty.server.PHP_SELF}?step=2&deptid={$department.id}"> <i class="fas fa-envelope"></i> <strong>{$department.name}</strong> {if $department.description} <p>{$department.description}</p> {/if} </a> {foreachelse} <span class="list-group-item">{include file="$template/includes/alert.tpl" type="info" msg=$LANG.nosupportdepartments textcenter=true}</span> {/foreach} <!-- 新链接放在循环外部 --> <a href="你的目标地址">自定义链接</a>
2. 仅当有部门时显示链接
在 {/foreach} 后添加条件判断,检查 $departments 是否存在数据:
{foreach from=$departments key=num item=department} <a class="list-group-item" href="{$smarty.server.PHP_SELF}?step=2&deptid={$department.id}"> <i class="fas fa-envelope"></i> <strong>{$department.name}</strong> {if $department.description} <p>{$department.description}</p> {/if} </a> {foreachelse} <span class="list-group-item">{include file="$template/includes/alert.tpl" type="info" msg=$LANG.nosupportdepartments textcenter=true}</span> {/foreach} {if $departments} <a href="你的目标地址">自定义链接</a> {/if}
3. 每个部门条目后都显示链接
把链接放到 {foreach} 循环体内部,每循环一个部门就会渲染一次链接:
{foreach from=$departments key=num item=department} <a class="list-group-item" href="{$smarty.server.PHP_SELF}?step=2&deptid={$department.id}"> <i class="fas fa-envelope"></i> <strong>{$department.name}</strong> {if $department.description} <p>{$department.description}</p> {/if} </a> <!-- 新链接放在循环体内 --> <a href="你的目标地址">自定义链接</a> {foreachelse} <span class="list-group-item">{include file="$template/includes/alert.tpl" type="info" msg=$LANG.nosupportdepartments textcenter=true}</span> {/foreach}
内容的提问来源于stack exchange,提问作者Steph3071
相关产品推荐
相关产品推荐

