2013-07-28 55 views
1

我正在cakephp开发的网站中工作,在那里我有一个页面可以将更少的文件(css)保存到我的数据库中。 我想要做的是在PHP中保存到我的数据库(模型)之前验证较少的字符串。在PHP中验证LESS字符串

有没有办法在PHP中验证LESS字符串以了解是否有一些错误并停止保存?

我的作用是类似的东西到模型:

public function beforeSave(){ 
     if (isset($this->data['Widget']['code_less'])){ 
      //I want here to check if the less string is a valid less 
     } 
     return true; 
    } 

我见过lessphp项目,但我不希望我的少保存到一个文件或类似的东西,我只是想验证LESS字符串不是文件。

感谢

+5

'lessphp'编译文件和字符串。它也会在无效文件上抛出异常。见http://leafo.net/lessphp/docs/#php_interface(错误处理部分) –

+0

我已经看到,但cakephp插件不做这个事情@ dev-null-dweller或在手册中没有指定 –

+0

因此,将插件更改为暴露库的全部潜力的插件,或者将包含'lessc'的文件并直接使用。 –

回答

1

使用@vadim的建议,并创建自定义函数的自定义验证。

正如@提到开发无效居民Lessphp提供了一个选项来做到这一点:

validateless($lesscode) 
{ 
    $less = new lessc; 
    try { 
     $less->compile($lesscode); 
    } 
    catch (Exception $ex) { 
     return false; 
    } 
    return true; 
} 

Lessphp 0.4支持以下版本< 1.4.2现在。虽然不使用最新版本的LESS,但在大多数情况下,结果足以验证简单的少量代码字符串。 Less.php支持LESS v 1.4.2。 (它也编译Twitter的Bootstrap> 3.0.0。)。 Less.php不支持验证。每次只传递一个较少的规则,当代码无效时将导致一个空字符串。检查多个规则/行一次似乎不可能。

另一种选择是在你的服务器上安装Less,并用php系统调用调用捆绑的编译器。 安装LESS:npm install -g less

validateless($lesscode) 
{ 
    exec('echo "'.$lesscode.'" | lessc -',$output,$error); 
    return ($error>0)?false:true; 
}