【发布时间】:2015-07-16 12:01:31
【问题描述】:
目前我正在使用 Yii 框架开发网站 CMS,用户可以在其中编辑网站中使用的主要背景颜色。当我加载页面时,我需要从数据库中查询 CSS 值(背景颜色),将结果放到 Cookies 中,然后在我的 CSS 文件中使用这些值。
为了在 CSS 文件中使用 PHP 变量和 Cookie,我将 CSS 文件从 main.css 重命名为 main.php 并在顶部添加:header("Content-type: text/css; charset: UTF-8");。
问题是,当我第一次打开页面时,我从数据库中获取的颜色没有加载。我使用检查元素并检查了 CSS 文件,但背景颜色定义不存在。它只在我刷新一次页面后出现。
请告诉我我做错了什么?任何帮助表示赞赏。相关代码如下。
protected/components/Controller.php 中的查询和 Cookie 插入:
public function beforeControllerAction($controller, $action)
{
if(parent::beforeControllerAction($controller, $action))
{
$prog = Programs::model()->find(array(
'condition'=>'id_program = :program',
'params'=>array(
':program'=>Yii::app()->params->programCode,
),
));
Yii::app()->request->cookies['color1'] = new CHttpCookie('color1', $prog->main_color1);
}
}
CSS 文件:
<?php
header("Content-type: text/css; charset: UTF-8");
$color1 = $_COOKIE['color1'];
?>
#header
{
background-color: <?php echo $color1; ?>;
}
【问题讨论】:
-
任何相关代码表示赞赏
-
这只是一个想法,我还没有尝试过,但你为什么不从 main.php 文件中删除你的标题并通过 STYLE 标签定义样式。我想我在某处看到过类似的解决方案。您遇到的问题可能是浏览器缓存。