2017-05-14 166 views
2

コードはタスク情報を出力します。タスク配列をJSに渡したいどうすればいい?私の小枝コードの一部: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({ 

    }); 
}); 
+0

問題を解決しましたか? –

+0

@IlarioPierbattistaはい、私はしました:) – David

答えて

1

まず第一に、あなたは、PHPの間には大きな敬意があることを知っておく必要があります配列とJavascript配列。

あなたの配列を、PHPとJavaScriptの両方で理解できる共通の理解フォーマット(JSON)に変換する必要があります。

ので、私は次のように、あなたはあなたのjavascriptの変数を設定することができ、あなたはJSON形式として小枝ためにあなたのコントローラからタスクを送信していることを前提としています:

<script> 
var tasks = '{{ tasks }}'; 
var tasksObj = JSON.parse(tasks); // to convert json into a javascript object 
</script> 
2

あなたはJSON形式で配列をシリアル化することができます: {{ tasks | json_encode() }}

JavaScriptがtwigテンプレートの<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); 
関連する問題