2015-09-19 38 views
1

我創建的PHP chart.js之圖表,看起來像這樣:擴展chart.js之在PHP定界符原因解析錯誤

$chart = <<<ECHO 
<script type="text/javascript"> 
var ctx = document.getElementById("myChart").getContext("2d"); 

Chart.types.Bar.extend({ 
    name: "myChart", 
    initialize: function() { 
     Chart.types.Bar.prototype.initialize.apply(this, arguments); 
    } 
}); 

new Chart(ctx).myChart(data, { 
    scaleLabel : "<%= value + ' $' %>" 
}); 

</script> 
ECHO; 
echo $chart; 

此代碼工作正常,如果我運行它在Javascript但不幸的是,我需要通過PHP顯示它(我使用CMS中的一個組件),它不起作用。我得到以下錯誤:

Parse error: syntax error, unexpected '=', expecting '}' in process.php(1227) : eval()'d code on line 154

我縮小了誤差下降到initialize: function() {...}行代碼。但是爲什麼它會在PHP回聲中造成問題?

回答

1

我不知道爲什麼你有問題,我不認爲你應該。

但我對你有一個更好的答案,使用緩衝區,而不是here文檔(他們更容易反正工作)

谷歌ob_start瞭解它是如何工作的,他們是超級有用

ob_start()?> 
<script type="text/javascript"> 
var ctx = document.getElementById("myChart").getContext("2d"); 

Chart.types.Bar.extend({ 
    name: "myChart", 
    initialize: function() { 
     Chart.types.Bar.prototype.initialize.apply(this, arguments); 
    } 
}); 

new Chart(ctx).myChart(data, { 
    scaleLabel : "<%= value + ' $' %>" 
}); 

</script> 
<?php $chart = ob_get_clean(); 
echo $chart; 
+0

Did not know about this thats very clean :) 顯然它是調用參數的組件,因爲函數init,所以我把這個部分作爲一個字符串放到一個變量中,並回應它的工作。 – Mugen