我正在尝试使用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。
答案 0 :(得分:1)
阅读此提示: 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')
}
})
}}