我将我的样式表包含在一个普通<link />
标签中,但我需要/想要从样式表内部访问树枝变量。这可能吗?我唯一想象的是将整个样式表放入<style>
标签内的文档中,但这不会很漂亮;)。
问问题
3897 次
1 回答
7
例如,创建一个样式表styles.css.twig
并将内容放在那里。例如:
.user-color{
color: {{ user_color }};
}
现在,创建一个渲染此文件并将其保存在某处的类:
class TemplateRenderer
{
protected $basepath;
protected $templating;
protected $parameters = array();
public function __construct($templating, $basepath, $styleseheetpath)
{
$this->basepath = $basepath; /* "%kerel.base_path" parameter */
$this->templating = $templating; /* "twig" service */
$this->stylesheetpath = $stylesheetpath; /* custom defined parameter */
}
public function setParam($id, $value)
{
$this->parameters[$id] = $value;
}
public function render()
{
file_put_contents(
$this->basepath.'/web/assets/css/styles.css',
$this->templating->render(
$this->stylesheetpath,
$this->parameters
)
);
}
}
将此类注册为服务并将其注册为事件后监听器(http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html)。
从您的控制器(或使用方法注入的事件配置文件),您可以调用该setParam
方法来设置变量。
在您的基本 html 文件中,您可以使用它的路径(现在,web/assets/css/styles.css
)包含此文件。
请注意,代码是一个示例。肯定需要一些错误处理和缓存才能使其在生产中可用。
于 2013-07-27T14:02:49.403 回答