2012-08-01 42 views
2

從PHP解析字符串時,我有以下less代碼注入較少的變量。我讀過周圍,有在url()聲明中使用變量時是限制在less.js,所以我用了兩個建議的解決辦法,但真正的問題是,該變量來自PHP和它似乎它沒有正確傳遞,因爲它從來沒有解釋。無法在lessphp

我使用lessphp

也許我做錯了什麼。

PHP代碼

$this->parsed_css = $this->lessc->parse($this->parsed_css, array('fontdir', 'myfontdir')); 

Less代碼

@font-face { 
    font-family: 'FontAwesome'; 
    src: url(%("%s/fontawesome-webfont.eot", @fontdir)); 
    src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), 
     url('@{fontdir}/fontawesome-webfont.woff') format('woff'), 
     url('@{fontdir}/fontawesome-webfont.ttf') format('truetype'), 
     url('@{fontdir}/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'), 
     url('@{fontdir}/fontawesome-webfont.svg#FontAwesomeRegular') format('svg'); 
    font-weight: @fontdir; 
    font-style: normal; 
} 

CSS輸出

@font-face { 
    font-family:'FontAwesome'; 
    src:url("/fontawesome-webfont.eot"); 
    src:url('/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('/fontawesome-webfont.woff') format('woff'), url('/fontawesome-webfont.ttf') format('truetype'), url('/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'), url('/fontawesome-webfont.svg#FontAwesomeRegular') format('svg'); 
    font-weight:; 
    font-style:normal; 
} 

正如你所看到的變量從未解釋。

回答

1

根據您的原始問題(在刪除編輯前),變量的名稱爲$font_dir,但您在所有引用中都使用fontdir(無下劃線)。

嘗試用array('fontdir' => $font_dir)分配fontdir元素的值,如:

$this->parsed_css = $this->lessc->parse($this->parsed_css, array('fontdir' => $font_dir, 'myfontdir' => $my_font_dir)); 
+0

不,我不連傳遞變量,'$這 - > parsed_css = $這個 - > lessc->解析($這 - > parsed_css,陣列(「FONTDIR」,「myfontdir」));',我將在稍後傳遞變量,截至目前我硬編碼它 – 2012-08-01 13:42:33

+0

是的yopu是正確的,我是白癡,'陣列( 'fontdir','myfontdir')'應該是'array('fontdir'=>'myfontdir')'。謝謝! :) – 2012-08-01 13:55:00

+0

不需要名稱呼叫= P;這是一個常見的錯誤(我已經做了很多次) - 有些系統通過索引0對1進行鍵/值匹配(就像您原來的那樣),有些使用PHP的'key'=>'value'方法進行匹配。 – newfurniturey 2012-08-01 13:58:18

0

我剛剛下載less並測試它,數組的東西似乎並不成爲唯一的原因,你的代碼ISN」不工作。

這不是有效less代碼(至少根據documentation

src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype') 
//  ^ ^ Remove these 

//Right 
echo $less->parse("color: @color", 
    array(
     'color' => 'red' 
)); //color:red; 

//Wrong 
echo $less->parse("color: @{color}", 
     array(
      'color' => 'red' 
    )); // (no output) 
+0

否sintax是正確的(而且我認爲這是因爲我串連到URL(),外面不應使用要求),我不得不做一些額外的工作有一切工作,比如逃逸的變量,因爲少它有一個:裏面,但這裏的問題是與陣列 – 2012-08-01 14:37:59

+0

@NicolaPeluchetti,很奇怪!因爲我甚至測試了你發佈的完全相同的'less'代碼,所以不起作用。那麼,你很高興你解決了它! – Adi 2012-08-01 14:53:27