我正在 Code Igniter 上重写网站,我需要加载外部 TTF。 MySQL 数据库指向该 TTF 的路径。我能以某种方式将这些变量传递给 CSS 并使 foreach 循环“加载”这些字体吗?
我试过了
$this->load->vars($data);
最佳答案
首先,处理提供动态 CSS。我的站点有一个名为“资源”的 Controller ,它允许我提供 CSS、JS 等(将来可能是图像)。它根据 url 中传递给它的段加载 View 。
因此,当请求 http://mysite.com/resource/css/main.css
时:
- 我的
Resource
Controller (.../controllers/resource
) 处理数据处理的任何细节(与 MVC Controller 一样)。然后加载: - 通用 View :
".../views/resources/css.php"
,将所需的 css 文件的名称传递给它。此 View 打印出 header ,指定 Content-Type(重要!)和任何其他通用内容。然后它继续加载: - 指定的实际 CSS 文件,此处为
".../views/resources/css/main.css.php"
。
这有点矫枉过正,但提供了很大的灵 active ,就像您听起来需要的那样。
Controller :
...
$segments = $this->uri->segment_array();
array_shift($segments); // remove the first two
array_shift($segments);
$content['stylesheet'] = $segments[0] . ".php"; //e.g. main.css.php
$content['data'] = array(); //Font data, etc
$this->load->view('resources/css.php', $content);
..
通用资源/css.php 这会加载实际的 .css.php 样式表
<?php header("Content-Type: text/css"); // This is key! ?>
/* MySite CSS File (c) 2011 bla bla */
<?php
$this->load->view("resources/css/$stylesheet", $data);
echo "\n";
?>
具体资源/css/main.css.php
<?php echo "/* I can use PHP in my CSS! */\n"; ?>
body { background-color: <?=$data['bg_color']?>; }
p { font-family: <?=$data['p_font_fam'];?>; }
关于php - CodeIgniter - 将变量传递给 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032972/