Centreon中Smarty模板无法访问host_alias变量问题求助
Smarty模板中$service.host_alias变量未定义的排查与解决
在Smarty模板遍历$service_selected数据时,{$service.host_name}可正常输出主机名,但{$service.host_alias}无法显示主机别名,提示该变量未定义。
问题代码片段
{foreach from=$service_selected item=service} Host: {$service.host_name} MasterID: {$service.host_alias} Service: {$service.description} State: {$service.state_str} Duration: {$service.last_hard_state_change_duration} Output: {$service.output|substr:0:2048} Numéro de série: {$service.serial_number} Version du logiciel: {$service.software_version} Dernière vérification: {$service.last_check_time} {/foreach}
工单显示情况
截图显示:Host、Service、State等字段均正常展示对应内容,但MasterID(对应$service.host_alias)的位置为空,无任何输出。
排查与解决方案
- 检查数据源赋值逻辑:确认后端代码是否将
host_alias字段正确赋值给$service_selected数组的每个service元素。若从数据库取数,需确保SQL语句包含host_alias列(或对应表中的别名字段)。 - 验证字段名一致性:核对数据库查询返回的列名与Smarty模板变量名是否完全匹配(注意大小写、下划线等细节),避免因拼写错误导致变量未定义。
- 临时兼容处理(可选):若
host_alias字段无法从数据源获取,可临时用host_name作为兜底,写法示例:MasterID: {$service.host_alias|default:$service.host_name},避免页面出现空白。 - 调试变量结构:在模板中添加
{$service|var_dump},查看service数组的完整结构,确认是否存在host_alias键名及对应值是否正确。
内容的提问来源于stack exchange,提问作者Nouhaila elkhelfaoui
相关产品推荐
相关产品推荐

