CodeIgniter - 将变量传递给CSS

Cap*_*ppY 1 html css php codeigniter

我在Code Igniter上重写网站,我需要加载外部TTF.MySQL db指向该TTF的路径.我可以以某种方式将这些变量传递给CSS并使foreach循环"加载"这些字体.

我试过了

$this->load->vars($data);
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 6

首先,处理动态CSS的服务.我的网站有一个名为"资源"的控制器,它允许我提供CSS,JS等(可能是未来的图像).它根据在url中传递给它的段加载视图.

所以,http://mysite.com/resource/css/main.css请求时:

  • 我的Resourcecontroller(.../controllers/resource)处理任何特定的数据处理(一般用于MVC控制器).然后加载:
  • 通用视图:".../views/resources/css.php"传递所需css文件的名称.此视图打印出标题,指定Content-Type(重要!)和任何其他通用内容.然后继续加载:
  • 这里指定了实际的CSS文件".../views/resources/css/main.css.php".

它有点矫枉过正,但允许很多灵活性,就像你听起来像你需要的那样.

控制器:

...
$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);
..
Run Code Online (Sandbox Code Playgroud)

Generic resources/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";
?>
Run Code Online (Sandbox Code Playgroud)

具体资源/ 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'];?>; }
Run Code Online (Sandbox Code Playgroud)