代码打印出任务信息。我想将任务数组传递给JS。我怎么能这样做?我的一些代码:
<div>
{% for task in tasks %}
<tr>
<td id>{{ task.Id }}</td>
<td>{{ task.Status }}</td>
<td>{{ task.Name }}</td>
<td>{{ task.Description }}</td>
<td>{{ task.Category }}</td>
<td>{{ task.Author }}</td>
<td>{{ task.CreationDate|date("m/d/Y") }}</td>
<td><a id="myLink" href="/edit/{{ task.ID }}" > Edit </a></td>
<td><a id="myLink" href="/delete/{{ task.ID }}" >Delete</a></td>
<?php echo 2+2; ?> </tr>
{% endfor %}
</table>
</div>
我想将数组传递给这个js类:
$(function(){
$('#calendar').fullCalendar({
});
});
答案 0 :(得分:3)
您可以使用json格式序列化数组:{{ tasks | json_encode() }}
。
如果您的javascript位于树枝模板的<script>
元素内,您可以执行以下操作:var data = {{ tasks | json_encode() }}
。
否则,您可以将序列化数组放在twig模板中的某个位置作为元素的属性:
<div id="data-element" data-tasks="{{ tasks | json_encode() }}">
。
然后用
var jsonString = $('#data-element').data('tasks');
var data = JSON.parse(jsonString);
答案 1 :(得分:1)
首先,您需要知道PHP数组和Javascript数组之间存在很大差异。
您需要将数组转换为PHP和Javascript都能理解的通用理解格式,即JSON
。
所以我假设您将任务从控制器发送到twig作为json格式,然后您可以按如下方式设置您的javascript变量:
<script>
var tasks = '{{ tasks }}';
var tasksObj = JSON.parse(tasks); // to convert json into a javascript object
</script>