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 は Less バージョン < 1.4.2 をサポートします。LESS の最新バージョンを使用していませんが、ほとんどの場合、結果はより少ないコードの単純な文字列を有効にするのに十分です。 Less.phpは LESS v 1.4.2 をサポートしています。(これは、Twitter の Bootstrap > 3.0.0 もコンパイルします)。Less.php は検証をサポートしていません。毎回 less のルールを 1 つだけ渡すと、コードが無効な場合に空の文字列が返されます。複数のルール/行を一度にチェックすることは不可能のようです。

もう 1 つのオプションは、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 に答える