我使用stwe / DatatablesBundle进行symfony 2(http://github.com/stwe/DatatablesBundle)(稳定版本v0.6.1)并收到以下错误:
捕获致命错误:参数1传递给 SG \ DatatablesBundle \ DATATABLE \查看\ AbstractDatatableView :: __结构() 必须是Symfony \ Bundle \ TwigBundle \ TwigEngine的实例,无 给予,召唤 G:\服务器\ WWW \ bongoapp \程序\缓存\ dev的\ appDevDebugProjectContainer.php 在第418行并定义
我已尝试按照here的答案,但这对我不起作用。我究竟做错了什么?代码如下并提前感谢:
生成的数据表类:
namespace Bbd\BongoAppBundle\Datatables;
use Sg\DatatablesBundle\Datatable\View\AbstractDatatableView;
/**
* Class ArtistDatatable
*
* @package Bbd\BongoAppBundle\Datatables
*/
class ArtistDatatable extends AbstractDatatableView
{
/**
* {@inheritdoc}
*/
public function buildDatatableView()
{
$this->getFeatures()
->setServerSide(true)
->setProcessing(true);
$this->getAjax()->setUrl($this->getRouter()->generate('artist_results'));
$this->setStyle(self::BOOTSTRAP_3_STYLE);
$this->getColumnBuilder()
->add('id', 'column', array('title' => 'Id',))
->add('name', 'column', array('title' => 'Name',))
->add('bangla_name', 'column', array('title' => 'Bangla_name',))
->add('birth_place', 'column', array('title' => 'Birth_place',))
->add('priority', 'column', array('title' => 'Priority',))
->add('bday', 'column', array('title' => 'Bday',))
->add('bmonth', 'column', array('title' => 'Bmonth',))
->add('byear', 'column', array('title' => 'Byear',))
->add('sex', 'column', array('title' => 'Sex',))
->add('dod_day', 'column', array('title' => 'Dod_day',))
->add('dod_month', 'column', array('title' => 'Dod_month',))
->add('dod_year', 'column', array('title' => 'Dod_year',))
->add('bio_english', 'column', array('title' => 'Bio_english',))
->add('bio_bangla', 'column', array('title' => 'Bio_bangla',))
->add('real_name', 'column', array('title' => 'Real_name',))
->add('debut', 'column', array('title' => 'Debut',))
->add('graphics.id', 'column', array('title' => 'Graphics Id',))
->add('graphics.thumbnail', 'column', array('title' => 'Graphics Thumbnail',))
->add('graphics.poster', 'column', array('title' => 'Graphics Poster',))
->add('graphics.feature', 'column', array('title' => 'Graphics Feature',))
->add('graphics.gallery', 'column', array('title' => 'Graphics Gallery',))
;
}
/**
* {@inheritdoc}
*/
public function getEntity()
{
return 'Bbd\BongoAppBundle\Entity\Artist';
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'artist_datatable';
}
}
控制器
public function indexAction()
{
$postDatatable = $this->get("bbd_datatables.artist");
return array(
"datatable" => $postDatatable,
);
}
public function indexResultsAction()
{
/**
* @var \Sg\DatatablesBundle\Datatable\Data\DatatableData $datatable
*/
$datatable = $this->get("bbd_datatables.datatable")->getDatatable($this->get("bbd_datatables.artist"));
return $datatable->getResponse();
}
services.yml
bbd_datatables.artist:
class: Bbd\BongoAppBundle\Datatables\ArtistDatatable
tags:
- { name: bbd.datatable.view }
和 index.html.twig
{% block content_content %}
{{ datatable_render_html(datatable) }}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ datatable_render_js(datatable) }}
{% endblock %}
答案 0 :(得分:0)
好像你使用了错误的标签。
bbd_datatables.artist:
class: Bbd\BongoAppBundle\Datatables\ArtistDatatable
tags:
- { name: sg.datatable.view }
答案 1 :(得分:0)
我可以通过在配置中使用parent
参数来解决这个问题:
bbd_datatables.artist:
class: Bbd\BongoAppBundle\Datatables\ArtistDatatable
parent: sg_datatables.datatable.abstract
tags:
- { name: sg.datatable.view }
这会提取AbstractDatatableView
所需的参数声明。