Javascript 将变量从Symfony2 PHP文件发送到js文件
我对JavaScript真的是个新手,我不能很好地学习一些关于这方面的教程。如果有,请告诉我读一下 我想做的是将变量从我的PHP控制器传递到一个.js文件——我想填充Highcharts变量 我知道我可以发送响应,但我也需要加载模板 这是模板:Javascript 将变量从Symfony2 PHP文件发送到js文件,javascript,symfony,highcharts,Javascript,Symfony,Highcharts,我对JavaScript真的是个新手,我不能很好地学习一些关于这方面的教程。如果有,请告诉我读一下 我想做的是将变量从我的PHP控制器传递到一个.js文件——我想填充Highcharts变量 我知道我可以发送响应,但我也需要加载模板 这是模板: ... {% block body %} <h1>Months</h1> // This is the Chart: <div id="container" style="width:100%; heig
...
{% block body %}
<h1>Months</h1>
// This is the Chart:
<div id="container" style="width:100%; height:400px;"></div>
{%block javascript%}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="{{ asset('bundles/acmebudgettracker/js/month.js') }}"></script>
{%endblock%}
{% endblock %}
}));
以及控制器:
public function monthsAction()
{
$this->setUser();
$month_repository = $this->setRepository('Month');
$month = new Month();
$form = $this->createForm(new MonthType(), $month);
$all_months = $month_repository->findByUser($this->user);
return $this->render('AcmeBudgetTrackerBundle:Months:months.html.twig', array(
'all_months' => $all_months,
'form' => $form->createView()
));
}
我想做的是将控制器中的变量提供给month.js,并且仍然能够显示模板。如何实现这一点,有什么想法或教程吗?提前谢谢 Quick&“dirty”答案:使用balise在TWIG文件中设置变量,并在JS文件中使用这些变量
<script>
var foo = {{ bar }};
</script>
var foo={{bar};
您可以生成javascript作为细枝模板:
...
{% block body %}
<h1>Months</h1>
// This is the Chart:
<div id="container" style="width:100%; height:400px;"></div>
{%block javascript%}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="{{ asset('bundles/acmebudgettracker/js/month.js') }}"></script>
{%endblock%}
{% endblock %}
monthcontroller.php
routing.yml
script.js.twig
这是一个很好的方法,谢谢分享。:)但它带来了新的问题:如何在应用程序的其他部分重用javascript?每次一个新控制器?一个页面需要两个控制器,这有点奇怪。我想这取决于你需要做什么!为什么一页需要两个控制器?他刚刚在现有控制器中创建了新方法…两个动作*,对不起!:)
public function scriptAction()
{
// some logic
return $this->render('AcmeDemoBundle:Months:script.js.twig', array(
'user_months' => $user_months
));
}
javascript_route:
path: /generated-scripts/month.{_format}
defaults: { _controller: AcmeDemoBundle:Article:script, _format: js }
requirements:
_format: js|json
$(function () {
var options = {
chart: {
type: 'bar'
},
title: {
text: 'Budget for months'
},
xAxis: {
categories: ['Spent', 'Saved']
},
yAxis: {
title: {
text: 'Fruit eaten'
}
},
series: []
};
{% for user in user_months %}
options.series.push({ name: '{{ user.name }}', data: [{{ user.months|join(',') }}] };);
{% endfor %}
$('#container').highcharts(options);
});