尝试使用AliDatatableBundle时出现JSON错误

时间:2013-11-19 00:08:04

标签: symfony jquery-datatables symfony-2.3

我正在尝试使用AliDatatableBundle并按照文档说的那样按照每一步操作,所以这就是我的控制器的样子:

public function indexAction(Request $request) {
    $this->_datatable();
    return $this->render('PICommonBundle:Default:index.html.twig');
}

private function _datatable() {
    return $this->get('datatable')
                    ->setEntity("PIProyectoBundle:Proyectos", "p")
                    ->setFields(
                            array(
                                "Nombre" => 'p.nombre',
                                "Centros" => 'c.descripcion',
                                "Unidades" => 'u.descripcion',
                                "_identifier_" => 'p.id')
                    )
                    ->addJoin('p.centros', 'c', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
                    ->addJoin('p.unidades', 'u', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN);
}

public function gridAction() {
    return $this->_datatable()->execute();
}

这是我的模板:

{% extends '::base.html.twig' %}
    {% block content %}
        <link href="{{ asset('bundles/alidatatable/css/demo_table.css') }}" type="text/css" rel="stylesheet" />
        <link href="{{ asset('bundles/alidatatable/css/smoothness/jquery-ui-1.8.4.custom.css') }}" type="text/css" rel="stylesheet" />
        <script type="text/javascript" src="{{ asset('bundles/alidatatable/js/jquery.datatable.inc.js') }}"></script>
        <script type="text/javascript" src="{{ asset('bundles/alidatatable/js/jquery.dataTables.min.js') }}"></script>    

        {{ 
            datatable({
                'edit_route' : 'editar-asistencia',
                'delete_route' : 'eliminar-asistencia',
                'js' : {
                    'sAjaxSource' : path('informes')
                }
            }) 
        }}
    {% endblock %}  

但是每当我尝试执行该页面时,我都会收到此错误:

  

DataTables警告(表id ='ali-dta_98f13708210194c475687be6106a3b84'):   DataTables警告:无法解析来自服务器的JSON数据。这是由于>通过JSON格式化错误。

有什么建议吗?我正在使用最新的jQuery 1.10.2。

1 个答案:

答案 0 :(得分:1)

你是西班牙人吗? (我也是 !!) 我认为你的问题是sAjaxSource。

阅读此提示: Ali en github

在评论结束时:

“我查看了你的代码,甚至对它进行了测试:你的错误太简单了,”sAjaxSource“必须包含网格操作的路由,而不是索引操作”

在我的情况下,这解决了:

在(bundle)routing.yml:

empleados_grid:     pattern:/ empleados_grid     默认值:{_ control:MyBundle:Empleados:grid}

并在树枝模板中:

{{ datatable({ 
    'edit_route' : 'empleados_update',
    'delete_route' : 'empleados_delete',
    'js' : {
        'sAjaxSource' : path('empleados_grid')
    }
})

}}