2

我一直在搞乱lessphpbootstrap-colorpicker,我想知道是否可以用bootstrap-colorpicker设置的十六进制颜色覆盖更少的变量,例如:

<?php
if(isset($_POST['submit'])){
    require "lessc.inc.php";

    $less = new lessc;
    $less->setVariables(array("bodyBackground" => $_POST['color']));
    $less->checkedCompile("less/bootstrap.less", "output.css");

    try{
        $less->compile("invalid LESS } {");
    }catch(exception $e){
        echo "fatal error: " . $e->getMessage();
    }
}?>

标记:

<form method="post" action="">
    <input name="color" 
           type="text" 
           class="span3" 
           value="<?php if(isset($_POST['color'])){echo $_POST['color'];}else{echo       
                 '#8fff00';}?>" 
           id="cp1" />
    <input name="submit" class="btn btn-primary" type="submit" value="Submit"/>
</form>
<script>
$function(){
    var bodyStyle = $('body')[0].style;

    $('#cp1').colorpicker({format: 'hex'}).on('changeColor', function(ev){    
        bodyStyle.backgroundColor = ev.color.toHex();
});
</script>

我认为这会起作用,但它不起作用,我不完全确定 setVariables 是否正在传递 POST 数据,@bodyBackground: #new_hex;因为我目前正在获取引导程序的@whiteless 变量的默认值。我是 lessphp 的新手,想知道是否可以在编译之前为引导更少的变量分配新值?

提前致谢

4

1 回答 1

0

不,你不能(我认为)。阅读http://leafo.net/lessphp/docs/#compiling上的文档。您的设置$less->checkedCompile数组不被$less->checkedCompile. 导致 checkedCompile() 和 compileFile() 读取(更少)文件。

你可以做什么:1)添加一行:`@import "_custom.less"; 在less/bootstrap.less 的末尾。2)你的PHP代码:

require "lessc.inc.php";

$fp = fopen('less/_custom.less','w');
fwrite($fp,'@bodyBackground : '.$_POST['color']."\n");
fclose($fp);

$less = new lessc;
//$less->setVariables(array("bodyBackground" => $_POST['color']));
$less->FileCompile("less/bootstrap.less", "output.css");

` 注意checkedCompile 非常基础,它只检查输入文件的修改时间。它不知道来自@import 的任何文件。

是的,您可以使用十六进制颜色。

如果您不想更改引导程序的较少文件,请更新尝试:

/* with twitter boostrap less files in ./bootstrap-master/less */
error_reporting(E_ALL);
ini_set('display_errors','on');
require('lessphp/lessc.inc.php');

file_put_contents('./custom.less','@bodyBackground : '.$_POST['color']."\n");

$less = new lessc;
$less->setImportDir(array('./bootstrap-master/less','.'));
try {
$css = $less->compile(file_get_contents('./bootstrap-master/less/bootstrap.less')."\n" . '@import "custom.less";'); 
} catch (Exception $ex) {
    echo "lessphp fatal error: ".$ex->getMessage();
}

file_put_contents('./bootstrap.css',$css);
exit;
于 2013-06-04T20:44:44.357 回答