如何将数据表与数据对象一起使用?

时间:2019-01-29 10:59:39

标签: json ajax symfony datatables twig

我正在生成一个json文件,以便以后在我的数据表中使用它:

$data = $serializer->serialize($table, 'json');
$file = 'data/data.json';
file_put_contents($file, $data);

集成到我的数据表中

var table = $('.table').DataTable({
    "ajax": {
      "url": "{{ absolute_url(asset('data/data.json')) }}",
      "dataSrc": ""
    },

是否可以直接使用data对象代替创建文件?

2 个答案:

答案 0 :(得分:1)

是的。

  1. 创建一条响应data / data.json的路由
my_data_route_name:
    path: /data/data.json
    controller: App\YourController::yourAction
  1. 生成JSON数据
$data = []; // Get your data

// You can serialize it and return a Response with the content-type
$json = $serializer->serialize($data, 'json');
return new Response($json, 200, [
    'content-type' => 'application/json'
]);

// or let the symfony serializer handle it.
return $this->json($data);

答案 1 :(得分:1)

是的...您可以在JavaScript中使用data选项,就像这样...选中https://datatables.net/examples/data_sources/js_array.html

<?php
// controller
   return $this->render("myTemplate.html.twig", ["data" => $data]);

您的模板将看起来...

var table = $('.table').DataTable({
    "data": {{ data|json_encode|raw }},
    "columns": [
        ....
    ]

更新

由于您使用了特殊的序列化程序,因此您的代码将显示

<?php
// controller
   $data = $serializer->serialize($table, 'json');
   return $this->render("myTemplate.html.twig", ["data" => $data]);

并且您的树枝模板必须是...

  var table = $('.table').DataTable({
    "data": {{ data|raw }},
    "columns": [
      {% for key, value in columns %}
       { "data": "id"},
      {% endfor %}

    ]
  });