我正在使用Symfony 1.4,并且使用LESS CSS预处理器遇到了一些问题。
假设我有2个具有颜色特定变量的文件。它们被称为blue.less
和red.less
。
他们是:
Blue.less
@mainBorder: blue;
@pulldownBackground: blue;
Red.less
@mainBorder: red;
@pulldownBackground: red;
现在让我们说我有一个 layout.less 文件,它看起来像这样:
// Colored line under Nav
.main {
border: 1px solid @mainBorder;
.pullDown { background: @pullDownBackground; }
}
如果我想使用其中一个颜色变量文件,我需要在 layout.less 文件的顶部声明它,如下所示:
@import 'red.less';
由于@import
语句必须引用特定文件,因此每当我想更改颜色方案时,如何能够将blue.less
动态传递给@import语句?
是否有办法动态声明哪些颜色特定的LESS文件将通过PHP和Symfony框架传递给该导入语句?
或者没有服务器端代码可以解决这个问题吗?
答案 0 :(得分:1)
我从未使用过Symphony,但无论框架如何,这都应该让你朝着正确的方向前进。
首先,您要创建LESS文件:
<?php
$color_scheme = "red"; // we're simplifying here for now, but this could be set via $_POST variable
/*
it would probably be a good idea to check if the file exists first before we import it.
see function: file_exists()
*/
$contents = "
@import '$color_scheme.less';
@import 'main_styles.less';
@import 'other_stuff.less';
";
file_put_contents("path/to/styles.less");
?>
现在您有一个可以处理的LESS文件,就像您手动编写一样,但颜色方案可以轻松交换。如果我使用裸PHP进行此操作,我将使用exec()
函数来调用可通过命令行使用的命令。这是一个通过exec()
调用SASS的示例(我从未使用过这种方式,所以你必须在这里填空)。
<?php
exec("sass --compile path/to/sass:path/to/public/css");
?>
如果您的Symphony插件为您完成编译而无需使用exec /命令行,那么您可能希望这样做。