ypnos-web / cakephp-datatables

CakePHP3 Plugin for DataTables plug-in for jQuery
MIT License
27 stars 24 forks source link

Call to undefined method DataTables\Controller\Component\DataTablesComponent::callback() #74

Open jsonjuri opened 5 years ago

jsonjuri commented 5 years ago

Hi,

I am loading $columns from the controllers and pass them to the view with set.

After setting the render attribute in the columns array like in your documentation CakePHP was giving the following error:

Call to undefined method DataTables\Controller\Component\DataTablesComponent::callback()

I found out callback was only in DataTablesHelper not in the Component. I copied this function to DataTablesComponent:

public function callback(string $name, array $args = []) : CallbackFunction
{
        return new CallbackFunction($name, $args);
}

And added use to the top of DataTablesComponent

use DataTables\Lib\CallbackFunction;

Now it's working fine, but not sure it was meant to work like this? Or did you add it to Helper with the purpose of loading $columns in the view?

ypnos-web commented 5 years ago

The columns are shared between controller and view, but the callbacks are a pure view matter.

I suggest you use ColumnDefinitions interface and add the callback in the view. Like $columns['name']['callback'] = ….

jsonjuri commented 5 years ago

You are right, thats working fine. Thanks!