Переопределить переменные Bootstrap LESS в Twitter с помощью LESSPHP

Я возился с lessphp и bootstrap-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;, так как в настоящее время я получаю значение по умолчанию для переменной bootstrap @white less. Я новичок в lessphp, и мне было интересно, можно ли присвоить новые значения для переменных bootstrap less перед компиляцией?

заранее спасибо


person dcd0181    schedule 04.12.2012    source источник


Ответы (1)


Нет, нельзя (я думаю). Чтение документации на http://leafo.net/lessphp/docs/#compiling. Ваш массив set $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.

И да, вы можете использовать шестнадцатеричные цвета.

Обновите, если вы не хотите вносить изменения в файлы less вашего бутстрапа, попробуйте:

/* 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;
person Bass Jobsen    schedule 04.06.2013