1

私は Symfony 1.4 を使用していますが、LESS CSS プリプロセッサを使用すると少し問題が発生します。

色固有の変数を持つ 2 つの Less ファイルがあるとします。それらは と と呼ばblue.lessred.lessます。

どうぞ:

ブルーレス

@mainBorder: blue;
@pulldownBackground: blue;

赤なし

@mainBorder: red;
@pulldownBackground: red;

次に、次のようなlayout.lessファイルがあるとします。

// Colored line under Nav
.main {
    border: 1px solid @mainBorder;
    .pullDown { background: @pullDownBackground; }
}

色変数ファイルの 1 つを使用する場合は、layout.lessファイルの先頭で次のように宣言する必要があります。

@import 'red.less';

ステートメントは特定のファイルを参照する必要があるため、配色を変更したいときはいつでも @import ステートメント@importに動的に渡すにはどうすればよいでしょうか?blue.less

PHP と Symfony フレームワークを使用して、どの色固有の LESS ファイルがその import ステートメントに渡されるかを動的に宣言する方法はありますか?

または、この問題はサーバー側のコードなしで解決できますか?

4

1 に答える 1

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()関数を使用して、コマンド ラインから使用できるコマンドを呼び出すことになります。SASS を呼び出す例を次に示しexec()ます (この方法で LESS を使用したことがないため、ここの空白を埋める必要があります)。

<?php
exec("sass --compile path/to/sass:path/to/public/css");
?>

Symphony プラグインが exec/command ラインを使用せずにコンパイルを行う場合は、代わりにそれを行いたいと思うでしょう。

于 2012-12-04T15:52:50.673 に答える