1

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

有没有办法验证 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保存到文件或类似的东西中,我只想验证LESS字符串而不是文件。

谢谢

4

1 回答 1

1

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

正如@dev-null-dweller 提到的,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 代码字符串。 Less.php支持 LESS v 1.4.2。(它还编译了 Twitter 的 Bootstrap > 3.0.0。)。Less.php 不支持验证。每次只传递一个less规则,当代码无效时会产生一个空字符串。一次检查多个规则/行似乎是不可能的。

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

validateless($lesscode)
{
   exec('echo "'.$lesscode.'" | lessc -',$output,$error);
   return ($error>0)?false:true;
}
于 2013-12-18T12:42:00.857 回答