如何将变量从twig传递给js?

时间:2017-05-14 21:06:02

标签: javascript php twig

代码打印出任务信息。我想将任务数组传递给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({

    });
});

2 个答案:

答案 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>