content-type 定义了浏览器把获取的文件当什么运行,例如一个javascript文件,设置为
text/html
就不给运行了,必须在Response Header中指定正确兼容的才能被运行。
例如,我的多个css文件都是PHP动态生成的,如果直接
... # in a method of a class extending think\Controller
return $this->fetch("/style/$name.css",[
'color' => 'rgb(252,255,2)',
'border-radius' => '.34rem'
'width' => 750px',
'bg_img' => 'http://website.com/favicon.ico'
]);
...
可以设置config.php
中为css
,但是所有的html文件都会被识别为css,所以不能动配置文件中的
solution
不使用默认的response配置,而是动态更新一些配置,如下
$content = $this->view->fetch("/style/$name.css", [
'color' => 'rgb(252,255,2)',
'border-radius' => '.34rem'
'width' => 750px',
'bg_img' => 'http://website.com/favicon.ico'
]);
# fetch 后传给 Response 作为输出内容,不直接 return
$res = new Response;
$res->content($content)->contentType('text/css')->send();
solution 2
可以使用less,scss,sass等来预处理呀,but ....