简体   繁体   中英

Symfony 2 Catchable Fatal Error: Argument 1 passed to Sg\DatatablesBundle\Datatable\::__construct() must be an instance of

I'm using stwe/DatatablesBundle for symfony 2 ( http://github.com/stwe/DatatablesBundle ) (stable version v0.6.1) and getting the following error:

Catchable Fatal Error: Argument 1 passed to Sg\\DatatablesBundle\\Datatable\\View\\AbstractDatatableView::__construct() must be an instance of Symfony\\Bundle\\TwigBundle\\TwigEngine, none given, called in G:\\server\\www\\bongoapp\\app\\cache\\dev\\appDevDebugProjectContainer.php on line 418 and defined

I have tried following the answer here , but it is not working for me. What am I doing wrong? Code below and thanks in advance:

Generated datatable class:

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';
}
}

Controller

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 }

and index.html.twig

{% block content_content %}
{{ datatable_render_html(datatable) }}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ datatable_render_js(datatable) }}
{% endblock %} 

It seems like you've used the wrong tag.

bbd_datatables.artist:
   class: Bbd\BongoAppBundle\Datatables\ArtistDatatable
   tags:
      - { name: sg.datatable.view }

Look: https://github.com/stwe/DatatablesBundle/blob/master/Resources/doc/example.md#step-3-registering-your-datatables-class-as-a-service

I could fix this by using the parent argument in the config:

bbd_datatables.artist:
    class: Bbd\BongoAppBundle\Datatables\ArtistDatatable
    parent: sg_datatables.datatable.abstract
    tags:
        - { name: sg.datatable.view }

This pulls the argument declaration required for the AbstractDatatableView .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM