2013-07-28 82 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; 
}