在 PHP heredoc 中扩展 chart.js 导致解析错误
Extend chart.js in PHP heredoc causes parse error
我在 PHP 中创建了一个带有 chart.js 的图表,如下所示:
$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 echo 中引起问题?
我不确定你为什么遇到问题,我认为你不应该遇到问题。
但我有一个更好的答案,使用缓冲区而不是 heredocs(无论如何它们更容易使用)
Google 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;
我在 PHP 中创建了一个带有 chart.js 的图表,如下所示:
$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 echo 中引起问题?
我不确定你为什么遇到问题,我认为你不应该遇到问题。
但我有一个更好的答案,使用缓冲区而不是 heredocs(无论如何它们更容易使用)
Google 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;