如何在CodeIgniter中根据数据库记录动态加载指定CSS样式表?
问题与解决方法
基于CodeIgniter 3.1.9与PHP 8.2.12开发项目时,需根据不同数据库记录加载对应打印CSS样式表,避免一次性加载所有样式造成冗余。此前尝试以下代码时,所有样式表仍会被加载:
<?php if($recipe['linkname'] = 'gallonsizesweettea'){ echo '<link rel="stylesheet" type="text/css" href="/assets/css/public/page/print/recipes/printgallonsizesweettea.css" media="print" />'; } if($recipe['linkname'] = 'applecobbler'){ echo '<link rel="stylesheet" type="text/css" href="/assets/css/public/page/print/recipes/printapplecobbler.css" media="print" />'; } ?>
问题原因
条件判断中使用了赋值运算符=而非比较运算符==,导致每个条件都会被判定为成立,进而输出所有样式表链接。
正确实现方式
- 修正运算符并使用
elseif优化逻辑:
<?php if($recipe['linkname'] == 'gallonsizesweettea'){ echo '<link rel="stylesheet" type="text/css" href="/assets/css/public/page/print/recipes/printgallonsizesweettea.css" media="print" />'; } elseif($recipe['linkname'] == 'applecobbler'){ echo '<link rel="stylesheet" type="text/css" href="/assets/css/public/page/print/recipes/printapplecobbler.css" media="print" />'; } ?>
- 若样式表命名规则统一,可通过动态拼接路径简化代码:
<?php $printCssPath = "/assets/css/public/page/print/recipes/print{$recipe['linkname']}.css"; echo '<link rel="stylesheet" type="text/css" href="'.$printCssPath.'" media="print" />'; ?>
内容的提问来源于stack exchange,提问作者user4537352
相关产品推荐
相关产品推荐

